乐趣区

关于javascript:这一次只记录promise的常见用法

之前总是去看 promise 的源码博客,或者手动实现一个 promise,理论疏忽了 promise 的一些根本用法,明天就略微总结下吧。

1、Promise.resolve
Promise.resolve(42)理论能够看成一下代码的语法糖,
同理 Promise.reject(new Error(‘ 出错啦 ’))


new Promise(function(resolve){resolve(42);
});

Promise.resolve 也返回了一个 promise 对象,因而能够调用.then 办法

Promise.resolve(42).then(function(value){console.log(value);
});

2、Thenable
Thenable 指的是一个具备 .then 办法的对象。
Promise.resolve 办法另一个作用就是将 thenable 对象转换为 promise 对象

3、new Promise 回调函数是同步执行代码,而.then 是异步回调(微工作)

4、promise 的.then 和.catch 办法能够链式调用
.then 或.catch 办法都会创立并返回一个新的 promise 对象(因为只有 promise 对象上才有 then 和 catch 办法,这样链式调用就很好了解了)
比方 chain 调用
resolve → then → then → then 的程序执行, 并且传给每个 then 办法的 value 的值都是前一个 promise 对象通过 return 返回的值。

var aPromise = new Promise(function (resolve) {resolve(100);
});
var thenPromise = aPromise.then(function (value) {console.log(value);
});
var catchPromise = thenPromise.catch(function (error) {console.error(error);
});
console.log(aPromise !== thenPromise); // => true
console.log(thenPromise !== catchPromise);// => true

5、promise.all
当数组里的 promise 全副 resolve 的时候,then 回调就会触发(同理 全副 reject 后才会触发 catch 回调)
promise.all([p1,p2,…pn]).then()
传递给 Promise.all 的 promise 并不是一个个的程序执行的,而是同时开始、并行执行的。
而且promise.all 的后果 resp 外部的程序是跟 promise 的数组程序统一的,哪怕 p2 比 p1 先执行完

6、promise.race
race 有竞速的意思
即谁先执行完,race 就 then 回调
只有有一个 promise 对象进入 FulFilled 或者 Rejected 状态的话,就会持续进行前面的解决。

摘抄:
1.promise

退出移动版