"Promise.all이 정의되지 않은 배열을 반환하고 존재하기 전에 해결됩니다. 완료." 이 문제는 Promise.all()을 활용하는 함수가 정의되지 않은 값의 배열을 반환하고 배열 내의 모든 약속이 이행되기 전에 조기에 해결될 때 발생합니다.
Promise에서 Promise.all( )는 약속 객체의 배열을 기대합니다. addText 함수의 지도 콜백에 Promise 반환이 없기 때문에 여기에 정의되지 않은 값의 배열이 생성됩니다.
<code class="js">function addText(queries) { return Promise.all(queries.map(function(query) { // Insert a `return` statement here. models.queries .findById(query.queryId, { raw: true, attributes: ["query"], }) .then(function(queryFetched) { query.text = queryFetched.query; console.log(query); return Promise.resolve(query); }, function(error) { return Promise.reject(error); }); })); };</code>
return 문이 없으면 지도 콜백은 정의되지 않은 값의 배열을 반환하여 Promise 해결을 트리거합니다. 쿼리가 아직 완료되지 않았음에도 불구하고 .all()을 조기에 실행합니다.
반환 문에 코드를 포함하여 각 지도 콜백이 Promise를 반환하는지 확인하세요.
<code class="js">function addText(queries) { return Promise.all(queries.map(function(query) { return models.queries .findById(query.queryId, { raw: true, attributes: ["query"], }) .then(function(queryFetched) { query.text = queryFetched.query; console.log(query); return Promise.resolve(query); }, function(error) { return Promise.reject(error); }); })); };</code>
이렇게 하면 Promise.all()은 자체적으로 해결되기 전에 배열 내의 모든 Promise가 해결될 때까지 기다려 전체 프로세스가 성공적으로 완료되도록 합니다.
위 내용은 Promise.all()이 정의되지 않은 값 배열로 인해 조기에 해결되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!