Promise
手写Promise推荐
视频讲解(不是很全面,但是讲的不错)
文字讲解(较为全面)
从语法上说,Promise 是一个对象,从它可以获取异步操作得到的消息。
console.log(
typeof new Promise((r) => {
r();
})
); //>> 'object'
创建Promise对象
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve
和reject
。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。
resolve
函数的作用是,将Promise对象的状态从“未完成”变为“成功”(从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject
函数的作用是,将Promise对象的状态从“未完成”变为“失败”(从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
注:如果不传参,这个Promise对象就会一直保持pending状态。
let promise = new Promise(() => {
});
promise.then((res) => console.log(res)); //没有输出
then
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。
promise.then(function(value) {
// success
}, function(error) {
// failure
});
// 相当于
promise.then(function(value