Promise 学习
参考 https://www.jianshu.com/p/43f948051d65
// Promise里面传入一个函数类型的参数,这个函数类型的参数接收两个参数resolve reject var p=new Promise(function(resolve,reject){ // 异步操作 setTimeout(function(){ console.log('icessun'); // 两秒之后打印出icessun resolve('icessun2'); // resolve是成功后的回调函数 里面的icessun2是传入的参数 },2000) }); // 那么p是一个实例对象,可以使用then方法(Promise原型上面的方法) p.then(function(){ console.log(arguments); // 会打印出一个类数组 ['icessun2'] }) p.then(function(data){ console.log(data); // 会打印出icessun2 data接收了resolve里面的参数 }) 作者:icessun 链接:https://www.jianshu.com/p/43f948051d65 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
对于上面这段代码,首先
new
一个实例对象赋值给p
,Promise
的构造函数接受一个参数,是函数;并且传入两个参数:resolve,reject
,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数;然后里面设置一个定时器setTimeout
,开启一个异步操作,两秒后输出icessun
,并且调用resolve
方法链式操作
function runAsync1(){ var p=new Promise(function(resolve,reject){ setTimeout(function(){ console.log('执行完成1') resolve('icessun1'); },2000); }); return p; // 返回p实例对象 } function runAsync2(){ var p=new Promise(function(resolve,reject){ setTimeout(function(){ console.log('执行完成2') resolve('icessun2'); },2000); }); return p; // 返回p实例对象 } function runAsync3(){ var p=new Promise(function(resolve,reject){ setTimeout(function(){ console.log('执行完成3') resolve('icessun3'); },2000); }); return p; // 返回p实例对象 } // 正确的打开Promise的方法 runAsync1() .then(function(data){ console.log(data); return runAsync2(); }) .then(function(data){ console.log(data); return runAsync3(); }) .then(function(data){ console.log(data); }) 作者:icessun 链接:https://www.jianshu.com/p/43f948051d65 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
这样能够按照顺序,每隔两秒输出每个异步回调中的内容,运行结果:
![](https://upload-images.jianshu.io/upload_images/1811036-8515edc4957679de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/517/format/webp)
封装axios
https://www.cnblogs.com/ldlx-mars/p/7908950.html