【发布时间】:2015-11-03 06:31:21
【问题描述】:
编辑:这种方法纯粹是出于好奇。不是一个可行的解决方案,我也不会在其他地方使用。只是想了解这个特殊案例是如何运作的。
从这篇文章: https://github.com/getify/You-Dont-Know-JS/blob/master/async%20%26%20performance/ch3.md 这个假设可以工作:
function spread(fn) {
return Function.apply.bind( fn, null );
}
Promise.all(
foo( 10, 20 )
)
.then(
spread( function(x,y){
console.log( x, y ); // 200 599
} )
)
foo() 是一个返回两个 Promise 数组的函数。
这是我的示例,它不起作用
var p1 = new Promise(function(resolve, reject) {
resolve(55);
});
var p2 = new Promise(function(resolve, reject) {
resolve(44);
});
Promise.all([p1, p2])
.then(Function.apply.bind(
function(x, y) {
alert(x + ", " + y); // expecting popup with "55, 44"
},
null)
);
);
谁能解释我做错了什么?
【问题讨论】:
-
您必须使用
Function.apply吗?你可以简单地做Promise.all([p1, p2]).then(function( list ){ list.map() }) -
不,当然不是。我只是想了解它在这个特定示例中的工作原理。
-
显然您忘记了代码中的令牌
bind。我想知道这怎么没有引发语法错误。 -
我的错。粘贴了经过编辑的版本。但无论哪种方式都不起作用。
-
你仍然有一个语法错误 - 一个右括号太多了。 ypur 问题到底是什么,您没有收到任何错误吗?
标签: javascript promise