微信小程序在 小于 ios 8 的情况下,内置的promise包无法使用解决方案

引入外部的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值