Promises:结合了单个解析方法和Promise.all()



我有多个承诺获取不同的资产。我想实现:

  1. 通过then()先执行一些代码来处理这些承诺。
  2. 当一切都解决/获取,执行一些代码启动我的应用程序通过Promise.all().then()

我需要确保1在2之前执行。从我的测试来看,它似乎确实有效。

// handle promises one by one
promise1.then(results => {});
promise2.then(results => {});
// common process that should come after the above then()s
Promise.all([promise1, promise2])
.then(results => {});

但是我可以信赖它吗?是"单一"总是then()Promise.all()上执行then()之前执行?

While Promise。all被卡住了,因为它等待所有的promise完成,所以不能保证它在.then调用最后解析的promise之后会解析。

相反,你应该尝试从.then调用中创建新的承诺。

// handle promises one by one
const promise3 = promise1.then(results => {});
const promise4 = promise2.then(results => {});
// common process that should come after the above then()s
Promise.all([promise3, promise4])
.then(results => {});

这样你就可以保证Promise在then调用

之后会被解析。

你可以使用Async/await。通过等待每个承诺,您可以在最后编写代码来处理数据。

的例子:

(async () => {
const responses = [];
await new Promise((res) => res("promise1")).then((res) => {
console.log("From promise1 first then");
responses.push(res);
});
// Code at the end to do after all promises
console.log("Coming from second");
console.log("Responses:", responses);
})();

相关内容

  • 没有找到相关文章

最新更新