课件和 Demo 地址
https://github.com/geektime-geekbang/geek-nodejs
作者回复: 谢谢,录这段的时候已经有点困了
作者回复: const result = {};
let error = null;
Promise.all([
promiseA.then(res=> {
result['A'] = res; return res;
}).catch(e=> {
error = e;
}),
promiseB.then(res=> {
result['B'] = res; return res;
}).catch(e=> {
error = e;
})
]).then(()=> { xxx })
像这样写,所有的Promise就会在自己resolve之后把数据存在result里,然后所有的Promise在出错时也会把错误存起来,并且转到resolved状态
这样子,程序的逻辑就是Promise.all会等待所有的Promise执行完成,并且可以拿到所有Promise各自的结果。而不是“有任意Promise失败就回调。”
作者回复: 你提醒我了,then还可以传第二个参数,作用和catch一样。我习惯了then只传一个参数的情况,直接给忘了。
但是你这样抛错误,promise应该是不会进rejected状态的
作者回复: 有时候一个异步流程是由很多个子异步流程组合起来的。比如求职这个例子里整个求职过程是由三次面试组成的。
这时候你整个求职过程的成功和失败就取决于每一次的成功和失败。而不只是第一个promise
作者回复: 计划就是第二章面向初学者。后面会难的
作者回复: 通宵录课容易么
作者回复: 也有可能遇到promise了就一定resolve的好男人的(抠鼻)