javascript - 如何为 3 个函数实现 Javascript 承诺?
问题描述
我有 3 个函数都需要特定的时间来执行,然后当它们都完成后,我需要触发某个函数。使用以下代码,我可以使用单个函数获得预期结果,但使用多个函数我无法做到这一点,请帮助我编辑此代码以等待我的3 个函数,然后控制台它们返回的数据。
var promise = new Promise(function(resolve, reject)
{
setTimeout(function()
{
resolve('hello world');
}, 2000);
});
promise.then(function(data)
{
console.log(data);
});
解决方案
Javascript 有一个内置的方法,它等待你承诺解决的所有问题。
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
});
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
所以对于你的情况:
const promiseFunction = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
};
const promise1 = promiseFunction();
const promise2 = promiseFunction();
const promise3 = promiseFunction();
Promise.all([promise1, promise2, promise3])
.then((result) => {
console.log(result[0]);
console.log(result[1]);
console.log(result[2]);
})
结果是从每个承诺返回的值数组。
推荐阅读
- spring - 如何只使用spring security允许匿名用户访问某个功能
- javascript - jQuery - 获取 HTTP 请求不会在获取的源代码中执行 JavaScript
- angular - 如何在 Angular 6+ 的本地机器上运行 Dist 文件夹?
- algorithm - 递归关系问题
- lua - 我的代码什么也没做
- ios - Yelp 如何出现在 iOS Spotlight 搜索中
- database - 有没有什么有效的方法来减少 HyperLogLog ( redis ) 中的错误?
- mysql - 印刷店数据库设计
- machine-learning - 我如何使用遗传算法表示染色体?
- tensorflow - Tensorflow 以兼容的方式保存和恢复模型(渴望和图形模式)