在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

微信小程序promsie.all與promise的順序執(zhí)行

微信小程序promsie.all與promise的順序執(zhí)行

更新時間:2025-09-25 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創(chuàng)新,經(jīng)過將近兩年的發(fā)展,已經(jīng)構(gòu)造了新的小程序開發(fā)環(huán)境和開發(fā)者生態(tài)。
這篇文章主要介紹了微信小程序promsie.all和promise順序執(zhí)行的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

微信小程序promsie.all和promise順序執(zhí)行

一、前言

最近在做小程序的開發(fā),碰到的一個需求就是表單提交,提交的表單中包含有圖片,微信這邊的做法是先上傳圖片,后臺把圖片名稱和地址返回給你,然后你把圖片信息插入到表單的相應位置再提交表單,這里就涉及到如何上傳完圖片的請求再上傳表單,而且微信小程序里面如果圖片是多個的話,也只能一張張上傳。簡單來說就是上傳完圖片(多個請求),拿到返回值,再上傳表單,該如何做?

二、Promise.all和Promise.race

先來介紹Promise.all和Promise.race方法的不同點Promise.all(iterable) 方法指當所有在可迭代參數(shù)中的 promises 已完成,或者第一個傳遞的 promise(指 reject)失敗時,返回 promise。iterable為可迭代對象,但是一般為數(shù)組。返回值也是一個Promise對象。

需要明確的幾點,Promise.all是并發(fā)執(zhí)行的同時運行多個Promise對象,而且返回的Promise對象的參數(shù)是一個數(shù)組,數(shù)組中的各項也是可迭代對象執(zhí)行的順序返回。

Promise.race(iterable) 方法返回一個新的 promise,參數(shù)iterable中只要有一個promise對象”完成(resolve)”或”失敗(reject)”,新的promise就會立刻”完成(resolve)”或者”失敗(reject)”,并獲得之前那個promise對象的返回值或者錯誤原因。所以只要iterable中有一個完成或者失敗就立即返回一個promise對象。根據(jù)race這個單詞為賽跑也能得出,最先到達的立即返回一個promise對象。

根據(jù)上面的定義,我們采用的Promise.all方法來完成我們的需求。

//存儲promise對象的數(shù)組
let promiseArr = [];
//圖片地址數(shù)組
let imageList = [];
//將圖片地址的上傳的promise對象加入到promiseArr
for (let i = 0; i < imageList.length; i++) {
  let promise = new Promise((resolve, reject) => {
    //微信圖片上傳
    wx.uploadFile({
      url: 'https://xxx.xxx.xxx/api/uploadImage',
      filePath: imageList[i],
      name: 'file',
      success: function(res) {
        //可以對res進行處理,然后resolve返回
        resolve(res);
      },
      fail: function (error) {
        reject(error);
      },
      complete: function (res) {
      },
    })
  });
  promiseArr.push(promise)
}
//Promise.all處理promiseArr數(shù)組中的每一個promise對象
Promise.all(promiseArr).then((result) => {
  //對返回的result數(shù)組進行處理
})

三、微信小程序的問題

在做微信小程序的圖片上傳功能,這邊只能先上傳圖片,然后將圖片名和地址以response返回。

這里面我們就是用了promise.all方法但是有一個問題就是,promise.all是并發(fā)執(zhí)行的,但是微信小程序一次只能并發(fā)10個請求。

對于圖片上傳,可能需要一次上傳超過10張圖片,也就是一次并發(fā)超過10個請求,這樣的話微信就會報錯

“WAService.js:4 uploadFile:fail createUploadTask:fail exceed max upload connection count 10”。

微信小程序promsie.all和promise的順序執(zhí)行

四、順序Promise執(zhí)行處理

因為Promise.all是同時運行多個promsie對象,所以對于這種并發(fā)的數(shù)量,小程序是有限制的,一次只能并發(fā)10個,所以如果想突破這種限制,可以進行順序執(zhí)行每個Promise。

代碼如下:

//順序處理函數(shù)
function sequenceTasks(tasks) {
  //記錄返回值
  function recordValue(results, value) {
    results.push(value);
    return results;
  }
  let pushValue = recordValue.bind(null, []);
  let promise = Promise.resolve();
  // 處理tasks數(shù)組中的每個函數(shù)對象
  for (let i = 0; i < tasks.length; i++) {
    let task = tasks[i];
    promise = promise.then(task).then(pushValue);
  }
  return promise;
}

//函數(shù)數(shù)組,每個函數(shù)的返回值是一個promise對象
let promiseFuncArr = [];
//圖片地址數(shù)組
let imageList = [];
//將圖片地址的上傳的函數(shù)加入到promiseFuncArr數(shù)組中
for (let i = 0; i < imageList.length; i++) {
  let promiseTemp = function(){
    return new Promise((resolve, reject) => {
      //微信圖片上傳
      wx.uploadFile({
        url: 'https://xxx.xxx.xxx/api/uploadImage',
        filePath: imageList[i],
        name: 'file',
        success: function(res) {
          //可以對res進行處理,然后resolve返回
          resolve(res);
        },
        fail: function (error) {
          reject(error);
        },
        complete: function (res) {
        },
      })
    });
  };
  promiseFuncArr.push(promiseTemp)
}

sequenceTasks(promiseFuncArr).then((result) => {
  //對返回的result數(shù)組進行處理
});

1.這里解釋一下sequenceTasks函數(shù)的作用

首先recordValue函數(shù)傳入兩個值,一個是results是返回的數(shù)組,另一個是value,value是傳入的值,results.push(value);將每一個值push到results數(shù)組,然后再返回results數(shù)組。

let pushValue = recordValue.bind(null, []);

pushValue也是一個函數(shù)對象,將recordValue bind到一個[ ]數(shù)組中,第一個參數(shù)傳null代表,不改變函數(shù)this的指向,所以pushValue得到就是一個function (value)的函數(shù),參數(shù)傳入value。

promise = promise.then(task).then(pushValue);

task是函數(shù),函數(shù)返回promise對象,在我們這里就是上傳圖片函數(shù),每一張圖片上傳都創(chuàng)建一個函數(shù),then(pushValue),pushValue是function (value)的函數(shù),value代表的就是圖片上傳之后的返回值,pushValue將返回值push到result數(shù)組中,依次執(zhí)行,依次加入到result數(shù)組中,最后返回。就可以得到一個對象數(shù)組,數(shù)組中就是依次執(zhí)行返回的結(jié)果。

2. sequenceTasks也里面的for循環(huán),也可以寫成如下的reduce方式:

function sequenceTasks(tasks) {
  //記錄返回值
  function recordValue(results, value) {
    results.push(value);
    return results;
  }
  let pushValue = recordValue.bind(null, []);
  return tasks.reduce(function (promise, task) {
    return promise.then(task).then(pushValue);
  }, Promise.resolve());
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)!

相關(guān)推薦:

微信小程序訪問node.js接口服務器搭建的介紹

微信小程序網(wǎng)絡請求wx.request的介紹

微信小程序?qū)崿F(xiàn)YDUI中ScrollTab組件

以上就是微信小程序promsie.all和promise的順序執(zhí)行的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


小程序是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 一级性生活视频| 国产大尺度在线观看| 999一区二区三区| 毛片毛片毛片毛片毛| 天天干天天玩天天操| 黑森林精品导航| 亚洲激情在线看| www.99r| 日日干夜夜操s8| 香蕉视频999| 黄色小视频免费网站| 天天综合成人网| 欧美一级黄色录像片| www.亚洲视频.com| 玩弄中年熟妇正在播放| 国产淫片av片久久久久久| 天天碰免费视频| www.亚洲自拍| 国产精品成人久久电影| 日韩欧美视频网站| 少妇激情一区二区三区| 亚洲精品在线视频播放| 久久www视频| 国产熟女高潮视频| 亚洲免费黄色录像| 精品无码一区二区三区爱欲| 少妇性饥渴无码a区免费| 亚洲va综合va国产va中文| 91九色国产ts另类人妖| 国产老熟妇精品观看| 久久久精品麻豆| 99在线观看视频免费| 国产精品久久久毛片| 欧美交换配乱吟粗大25p| 一本色道无码道dvd在线观看| 国产传媒免费观看| 国产美女在线一区| 中文字幕日韩久久| 成人在线免费在线观看| 永久免费黄色片| 精品久久久久av| 久久亚洲a v| 免费网站在线观看黄| www国产黄色| 日韩亚洲欧美一区二区| 日本精品一区在线| 日本男人操女人| 成人在线国产视频| 一区二区三区日韩视频| 日韩在线第三页| 欧美日韩在线一| 大伊香蕉精品视频在线| 日韩在线不卡一区| 成人性视频欧美一区二区三区| 日韩精品在线中文字幕| 91制片厂免费观看| 手机福利在线视频| 色男人天堂av| 亚洲综合在线一区二区| 久久久久久蜜桃一区二区| 成年人在线看片| chinese少妇国语对白| 1024av视频| 欧美一区二区三区爽大粗免费| 免费看日b视频| 女人床在线观看| 性高湖久久久久久久久aaaaa| 亚洲国产精品女人| 大地资源第二页在线观看高清版| 色国产在线视频| 隔壁人妻偷人bd中字| 国产成人精品无码播放| 日本 片 成人 在线| 亚洲乱码中文字幕久久孕妇黑人| 黄色免费视频大全| 亚洲第一精品区| 少妇网站在线观看| 男的插女的下面视频| 手机版av在线| 天天色综合社区| 久激情内射婷内射蜜桃| 日韩精品视频一二三| 亚洲综合123| 肉色超薄丝袜脚交| 日本在线视频www色| 无码 制服 丝袜 国产 另类| 日韩精品视频一区二区在线观看| 人妻内射一区二区在线视频| 中文字幕第36页| 真人做人试看60分钟免费| 97视频在线免费| 任你操这里只有精品| 亚洲免费看av| 日本福利视频在线观看| 国产精品va无码一区二区| 亚洲老女人av| 一卡二卡三卡视频| 亚洲性生活网站| 日韩在线视频在线| 中文字幕乱码人妻综合二区三区 | 欧美三级理论片| 在线观看三级网站| 农村妇女精品一二区| 成人手机视频在线| 人妻内射一区二区在线视频| aaaaaaaa毛片| 999精彩视频| 国产精品沙发午睡系列| 亚洲区成人777777精品| 国产福利一区视频| 丁香六月激情网| 亚洲五月激情网| 校园春色 亚洲色图| www.av片| 国产内射老熟女aaaa| 我看黄色一级片| 欧美 日韩精品| 精品国产一区三区| 亚洲黄色网址在线观看| 亚洲最大成人在线观看| 黄色免费福利视频| 免费看欧美一级片| 裸体裸乳免费看| 91香蕉视频免费看| 中文字幕日韩久久| 中文字幕 日韩 欧美| 手机在线免费观看毛片| 免费无码国产v片在线观看| 欧美男女爱爱视频| 日本a级片在线播放| 中文字幕一区二区在线观看视频| 欧美日韩大尺度| 天天操天天摸天天爽| 一本久道中文无码字幕av| 91精品91久久久中77777老牛| 成人免费性视频| 亚洲精品蜜桃久久久久久| 大西瓜av在线| 亚洲色成人一区二区三区小说| 欧美日韩性生活片| aa在线免费观看| 国产天堂在线播放| 男生操女生视频在线观看| 国产精品嫩草影院8vv8| 国产成人美女视频| 天天综合五月天| 日韩精品一区二区免费| 欧洲av无码放荡人妇网站| 92看片淫黄大片一级| 国产精品久久久毛片| 欧美精品 - 色网| 男人天堂网站在线| 欧美视频在线播放一区| 欧美黄色性生活| 国产成人免费高清视频| 男女视频网站在线观看| 99热手机在线| 黄色网址在线免费看| 婷婷五月综合缴情在线视频| 在线视频日韩一区 | 自拍日韩亚洲一区在线| 凹凸日日摸日日碰夜夜爽1| 999这里有精品| 国产真人做爰毛片视频直播| 日韩中文字幕二区| avove在线观看| 热久久精品免费视频| 四虎免费在线观看视频| 能在线观看的av| 999热精品视频| 欧美日韩在线一| 亚洲精品视频三区| 50路60路老熟妇啪啪| 久久人妻无码一区二区| 一区二区三区视频在线观看免费| 免费的av在线| 99久久99精品| 午夜久久久精品| 黄色免费视频大全| h无码动漫在线观看| 精品亚洲视频在线| 成年人免费大片| 免费在线观看亚洲视频| 超碰超碰超碰超碰超碰| 五月婷婷丁香色| 国产真人无码作爱视频免费| 国产日本在线播放| 久久福利一区二区| 7777在线视频| 性鲍视频在线观看| 欧美精品久久久久久久久25p| 日本一本二本在线观看| 999一区二区三区| 国产精品日韩三级| 国产又粗又爽又黄的视频| 亚洲免费看av| 777一区二区| 中文字幕av不卡在线| 日本三级黄色网址| 日本中文字幕精品—区二区|