从源码里看之前比迷糊的东西就比较容易了, 比如catch,defer
一.catch
之前catch总是和try/catch混,
这回从源码看, 仅仅是给promise对象追加了一个只处理reject的then
所以Promise中异步错误处理 都应该是reject(new Error(“XXX”));
类似的还有Promise.resolve和Promise.reject,
就是返回一个新的Promise对象, 并立即执行resolve/reject方法
二.defer
defer方法生成一个defer对象. 这个对象def具有一个promise对象属性
def.resolve会把管理的promise变成完成态
之前工具类里经常在方法最后返回defer对象, 异步操作中用def.resolve();和def.reject(err);其实就是省得new Promise的简便操作
三.all
all是所有传入的promise都成功才返回成功, 只要有一个reject, 那就返回reject
race是只要有一个resolve就执行resolve
all是一种与的关系,而race是一种或的关系。
四. 全部源码
|
|