从这篇文章: 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()
是一个返回两个Promises数组的函数。
这是我的例子,它不起作用
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)
);
);
有人可以解释我做错了什么吗?
答案 0 :(得分:1)
你没有调用bind(),你出于某种原因省略了它。
function(x, y) {
alert(x + ", " + y); // expecting popup with "55, 44"
}
这可以通过提供apply函数作为回调来实现,并将以下函数绑定为thisArg。apply的第二个参数将为null。将调用thisArg,基本上这意味着,提供的函数将通过apply调用,不带参数。但随后“then”函数调用函数,用它自己的参数,最后一部分是推测性的。
{% for spot in spots %}
...
{% endfor %}