javascript - 在 setTimeout 中将多个参数传递给 promise 解析

标签 javascript asynchronous promise es6-promise

我试图跟随 MDN promise.all示例,但似乎我无法将更多参数传递给 setTimeout callback .

var p1 = new Promise((resolve, reject) => { 
  setTimeout(resolve, 200, 1,2,3); 
});
var p2 = new Promise((resolve, reject) => { 
  setTimeout(resolve, 500, "two"); 
});

Promise.all([p1, p2]).then(value => { 
  console.log(value);
}, reason => {
  console.log(reason)
});

这会打印出 [1, "two"],而我期望的是 [1, 2, 3, "two"]。使用 setTimeout 执行此操作而没有实现 promise 会按预期工作

setTimeout(cb, 100, 1, 2, 3);
function cb(a, b, c){
  console.log(a, b, c);
}
//=>1 2 3

为什么这对 promise 不起作用?如何实现 promise ?

最佳答案

resolve 函数只接受一个参数。您无法更改它,因为这是规范。

传递的多于此并没有什么区别,您的其他值将被忽略。

您可以选择将一个数组传递给 resolve 函数,但您将在 then 处理程序上获得一个数组,而不是您想要的独立值。

关于javascript - 在 setTimeout 中将多个参数传递给 promise 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39730629/

相关文章:

javascript - 来自 react-native 和 react-native-gesture-handler 的 Touchable 之间的区别

javascript - NVD3 Angular 指令回调触发得太早

javascript - 将调用函数添加到一个对象的所有字符串

javascript - JavaScript 中的警报功能不起作用

php - 如何设置应用程序,使其在内存中具有持久进程,并且无需重新初始化即可运行?

javascript - 从 promise 对象(服务器端)获取值到客户端 index.html

javascript - JavaScript 中 PerformPromiseThen 的 "throwaway"Promise 是什么?

c# - 当异步函数被同步调用时,被调用者的线程会发生什么

javascript - 加载文件后如何将 promise 错误传播到更高的 promise 级别?

javascript - 如何将嵌套回调转换为 promise