本文主要说一下Promise,Prepending(进行时),Resolve(成功了),Reject(失败了),then在小程序中的实际应用 关于promise的介绍什么的就不说了网上一搜一大堆,这里只说他的实际应用的代码 var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } }); 上面给出的是promise的写法我们一般写的时候会在一个方法中去写,下面我就贴出他的实际应用的代码(需要往下传递参数的写法) App({ onLaunch: function () { this.xuexi(); }, xuexi:function(){ this.test() .then(jj =>{ //这里是将test方法中resolve返回值赋值给下一个方法, //在这里可以对数据进行判断是否继续进行 return this.runAsync1(jj); }) .then(hh =>{ //这里是将runAsync1方法中resolve返回值赋值给下一个方法 return this.runAsync2(hh); }) .then(mm =>{ //这里是将runAsync2方法中resolve返回值赋值给下一个方法 this.runAsync3(mm); }) } test: function(){ var p = new Promise(function (resolve, reject) { setTimeout(function () { //注意:一旦你把promise的状态定义了哪他的状态就不会再改变. //比如我这里先写的resolve下面又跟着写了reject, //reject的代码会执行但是promise的状态是不会变的就是reject resolve("调用成功"); reject("调用失败"); }, 5000); }) return p; }, runAsync1 :function(jj){ var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(jj); resolve("测试的数据1"); }, 3000); }); return p; }, runAsync2: function (hh) { var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(hh); resolve('随便什么数据2'); }, 2000); }); return p; }, runAsync3: function (mm) { var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(mm); // resolve('随便什么数据6'); }, 2000); }); return p; }, }) 不需要传递参数的写法就是等待一个完成了就进行下一个的写法 App({ onLaunch: function () { this.xuexi(); }, xuexi:function(){ //只是等待上一个完成后就进行下一个不关心上一个的状态,没有数据的交互 this.test() .then(this.runAsync1); .then(this.runAsync2); .then(this.runAsync3); } test: function(){ var p = new Promise(function (resolve, reject) { setTimeout(function () { //注意:一旦你把promise的状态定义了哪他的状态就不会再改变. //比如我这里先写的resolve下面又跟着写了reject,reject的代码会执行但是promise的状态是不会变的就是reject resolve("调用成功"); reject("调用失败"); }, 5000); }) return p; }, runAsync1 :function(jj){ var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(jj); resolve("测试的数据1"); }, 3000); }); return p; }, runAsync2: function (hh) { var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(hh); resolve('随便什么数据2'); }, 2000); }); return p; }, runAsync3: function (mm) { var p = new Promise(function (resolve, reject) { //做一些异步操作 setTimeout(function () { console.log(mm); // resolve('随便什么数据6'); }, 2000); }); return p; }, }) 建议一个promise后面跟随一个catch去捕捉promise内部产生的错误 https://www.jianshu.com/p/acbc8986903a