刚学廖学峰老师的es6教程,看到promise一段代码:
var p1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
setTimeout(resolve, 600, 'P2');
});
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.all([p1, p2]).then(function (results) {
console.log(results); // 获得一个Array: ['P1', 'P2']
});
有两个疑问:1.为什么最后的到的是一个数组?2.为什么可以这样写“setTimeout(resolve, 500, 'P1');”?
1.看看promise.all https://developer.mozilla.org...
主要是等p1跟p2 resolve了才返回(或者报错),那么results应该是p1跟p2里的执行结果,作为数组也很合理吧
2.settimeout 可以接受第三个参数甚至……
https://developer.mozilla.org...
其将作为回调函数的参数传递进去,也就是打个比方
等回调的时候,就执行
resolve('P1')
;