我试图跟随 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/