javascript - 如何实现 3 个函数的 Javascript Promise?

标签 javascript es6-promise

我有 3 个函数,它们都需要特定的时间来执行,然后当它们全部完成时,我需要触发某个函数。使用以下代码,我能够使用单个函数获得预期结果,但使用多个函数时我无法做到这一点,请帮助我编辑此代码以等待我的3个函数 然后控制台他们返回的数据。

var promise = new Promise(function(resolve, reject) 
{
    setTimeout(function() 
    {
        resolve('hello world');
    }, 2000);
});

promise.then(function(data) 
{
    console.log(data);
});

最佳答案

Javascript 有一个内置方法,等待您 promise 解决的所有问题。

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]);
  })

结果是每个 Promise 返回的值的数组。

关于javascript - 如何实现 3 个函数的 Javascript Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859756/

相关文章:

javascript - 如何通过调用不同的id函数来使用多个model box?

javascript - 不使用组件时如何管理与 browserify 的依赖关系?

javascript - Bootstrap 导航栏下拉菜单在移动设备上不起作用

javascript - 实现 Promise.series 作为 Promise.all 的替代品

javascript - 如何使用 Observables 代替 Promise?

javascript - 函数参数可以使用数组方法吗?

javascript - 使用 angular2 从服务更新组件中的变量更改

javascript - 无法获取 jQuery.parseJSON() 值

javascript - 传递值时的顺序 Promise

Javascript Promise 保证 - Javascript 事件循环