在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 面向?qū)ο笕绾巫詧?zhí)行老報錯

面向?qū)ο笕绾巫詧?zhí)行老報錯

謝謝 大家的幫助,最后面放出實(shí)現(xiàn)代碼,@羊羊羊的方法也可以行,但我在手機(jī)端就出現(xiàn)問題,還在查原因

var wxSdk = {
uploadImage (localIds,call){
    let that =this
    if (!wxSdk.ua.isWeiXin()) {
      //Toast('請?jiān)谖⑿怒h(huán)境下操作!');
      return false;
    }else {
      return new Promise(function(resolve, reject) {
        if(localIds.length == 0){
          //所選圖全部上傳成功了
          resolve(serverIds);
          call && call(serverIds);
        }else{
          wx.uploadImage({
            localId: localId, // 需要上傳的圖片的本地ID,由chooseImage接口獲得
            isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
            success: function (res) {
              serverIds.push(res.serverId);//// 返回圖片的服務(wù)器端ID
              that.uploadImage(localIds,call);
            }
          });
        }
      });
    }
  }
}
回答
編輯回答
只愛你

你這個代碼如果是要表達(dá) 所有需要上傳的圖片的localId都放在數(shù)組localIds里面,你逐一上傳,知道數(shù)組為空,就停止執(zhí)行 這個邏輯的話,問題出現(xiàn)下面幾個地方:
1.使用了Promise就不用使用callback了
2.你的localIds數(shù)組的長度沒減少,所有不會走到resolve里面。
3.用Promise做類似于遞歸的調(diào)用錯了。
我模擬你的需求寫了一個,因?yàn)槲也恢滥愕膌ocalIds,serverIds,所以模擬了兩個。

var localIds = [0, 1, 2, 3];
var serverIds = [];
function uploadImage (localIds) {
  return new Promise (function (resolve, reject) {
    if (localIds.length == 0) {
      //所選圖全部上傳成功了
      return resolve({isFinished: true, data: serverIds});
    } else {
      var localId = localIds[0];
      wx.uploadImage({
        localId: localId, // 需要上傳的圖片的本地ID,由chooseImage接口獲得
        isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
        success: function (res) {
          serverIds.push(res.serverId);//// 返回圖片的服務(wù)器端ID
          localIds.shift();
          return resolve({isFinished: false});
        }
      });
    }
  }).then(({isFinished, data}) => {
    return isFinished ? Promise.resolve(data) : uploadImage(localIds);
  })
}
uploadImage(localIds).then((data) => {
  // 所有圖片的服務(wù)器端ID
  console.log(data);
})
2018年9月20日 13:07
編輯回答
夢囈

最后放出實(shí)現(xiàn)代碼

 var array=[];
    function output(j) {
        return new Promise( function(resolve, reject) {
            setTimeout(function () {
                console.log('開始',j)
                return resolve(j);
            },1000 * j);
        }).then(function (res) {
            return Promise.resolve(res)
        });
    }

    for (var i=0;i<5;i++){
        array.push(output(i));
    }
    Promise.all(array).then(function (res) {
        console.log('res',res);
    });
2018年5月15日 08:39
編輯回答
孤巷
 wx.uploadImage({
            localId: localId, // 需要上傳的圖片的本地ID,由chooseImage接口獲得
            isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
            success: function (res) {
              serverIds.push(res.serverId);//// 返回圖片的服務(wù)器端ID
              that.uploadImage(localIds,call);
            }
          });

你這里面的localId是哪來的?是不是未定義?

2018年5月5日 08:26
編輯回答
神曲
你是要自執(zhí)行?  ===>內(nèi)部調(diào)用一下不就好了
還是要解決報錯?  ====>啥錯誤
2017年2月19日 11:47