引入外部的promise没有现成的,没办法,自己写一个喽
function promise(toWait) { this.t = new Date(); this.isPromiseObject = 1; this.toWait = toWait; this.thenList = []; this.thenIndex = 0; this.res = function (data) { var thenInfo = this.thenList[this.thenIndex]; if(!thenInfo) { return; } var r = thenInfo.successCallback(data); if (r && r.isPromiseObject) { this.toWait = r.toWait; this.toWait(this.res.bind(this), this.rej.bind(this)); } this.thenIndex++; } this.rej = function (error) { var thenInfo = this.thenList[this.thenIndex]; if(typeof thenInfo.failedCallback!='undefined'){ thenInfo.failedCallback(error); } else { throw '未捕获的promise错误,请这then方法里,传递reject参数'; } } this.fired = false; this.then = function (sc, fc) { var then = { 'successCallback': sc, 'failedCallback': fc } this.thenList.push(then); if (!this.fired) { this.fired = true; this.toWait(this.res.bind(this), this.rej.bind(this)); } return this; } } module.exports = promise;
使用方法
var versionInfo = /iOS (\d+)/.exec(wx.getSystemInfoSync().system); if (versionInfo && parseInt(versionInfo[1]) <= 8) { Promise = require('promise.js'); } function error(){}; new Promise(function(res,rej){ //..... }).then(function(data){ return new Promise(function(res,rej){ //..... }); },error).then(function(data){ //..... },error);
github: https://github.com/suxianbaozi/promise