1:promise是什么?
就是(链式)包装的回调函数.
2:语法
new Promise( function(resolve, reject) {...} /* executor */ );
executor是带有 resolve 和 reject 两个参数的函数 。Promise构造函数执行时立即调用executor 函数
3:怎么使用?
promise.then(回调函数) (注意可以有两个回调函数,resolve,reject)
4:注意执行顺序
setTimeout(function() {
console.log(1);
}, 0);
new Promise(function (resolve, reject) {
resolve(2);
}).then(console.log);
console.log(3);
process.nextTick(() => {
console.log('nextTick')
})
Promise.resolve()
.then(() => {
console.log('then')
})
setImmediate(() => {
console.log('setImmediate')
})
console.log('end')
5:加深理解
promise替代了下面这种旧式的函数,这种旧式函数需要两个回调函数,并最终调用处理成功事件或者处理失败事件的回调函数:
function successCallback(result) {
console.log("It succeeded with " + result);
}
function failureCallback(error) {
console.log("It failed with " + error);
}
doSomething(successCallback, failureCallback);
新式函数返回一个你可以直接绑定回调函数的promise对象,来代替旧式的函数形式:
const promise = doSomething();
promise.then(successCallback, failureCallback);
或者更简单的形式:
doSomething().then(successCallback, failureCallback);