Promise.all 정의되지 않은 배열을 반환하고 조기에 해결
Promise.all은 Promise 객체의 배열을 받아들이고 모든 객체를 한 번에 해결하도록 설계되었습니다. 배열의 약속이 해결되었습니다. 그러나 제공된 코드에서는 Promise.all의 맵에 전달된 콜백 함수가 Promise를 반환하지 않기 때문에 문제가 발생합니다.
addText 함수 내에서:
<code class="javascript">function addText(queries) { return Promise.all(queries.map(function(query) { // Missing `return` statement causes undefined values in the array models.queries .findById(query.queryId, { raw: true, attributes: [ "query" ] }) .then(function(queryFetched) { query.text = queryFetched.query; console.log(query); // Return the updated query as a resolved Promise return Promise.resolve(query); }, function(error) { // Return the error as a rejected Promise return Promise.reject(error); }); })); };</code>
현재 상황은 다음과 같습니다. :
이 문제를 해결하고 Promise.all이 콜백의 모든 Promise 이후에만 해결되도록 하려면 해결된 경우 콜백은 명시적으로 Promises를 반환해야 합니다.
<code class="javascript">function addText(queries) { return Promise.all(queries.map(function(query) { // Added `return` statement to wrap the Promise in the callback 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가 해결된 후에만 적절하게 처리하고 해결할 수 있는 Promises를 반환합니다.
위 내용은 Promise.all이 정의되지 않은 배열을 반환하고 조기에 해결되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!