promise
2018-11-02 本文已影响0人
前端二营长
promise传送门:https://www.cnblogs.com/whybxy/p/7645578.html
promise是一个构造函数,自己身上有call、resolve、reject方法,原型上有then和catch等方法
Promise的构造函数接收一个参数,是函数,并传入两个参数分别是resolve和reject,分别表示异步操作执行后成功后的回调函数和失败后的回调函数
function runAsync(){
var p = new Promise(function(resolve, reject){
//做一些异步操作
setTimeout(function(){
console.log('执行完成');
resolve('随便什么数据');
}, 2000);
});
return p;
}
runAsync()
在runAsync()的返回上直接调用then方法,then接收一个参数,是函数,并且会拿到我们在runAsync中调用resolve时传的的参数。运行这段代码,会在2秒后输出“执行完成”,紧接着输出“随便什么数据”
runAsync().then(function(data){
console.log(data);
//后面可以用传过来的数据做些其他操作
//......
});
then里面的函数就是平时的回调函数,能够在异步执行完成后执行。简单来说就是将回调分离,异步完成后,用链式的方法调用回调函数。可以实现多个回调函数,比传统方便。一个.then(callback)就是一个回调的实现
then方法可以接受两个参数,第一个对应resolve的回调,第二个对应reject的回调