第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打破請求-承諾的循環(huán)

打破請求-承諾的循環(huán)

守候你守候我 2022-06-16 10:45:12
/api?id=1&page=每次請求不同的頁面時,我都會 遍歷這個 url ,直到得到我想要的結果。我不知道如何以及為什么不能從請求中停止循環(huán)。async something() {  let results = []  for (let i = 0;i < 999;i++) {    await rp('/api?id=1page='+i).then(string => {     results.push(string)     if(results === 'THE END') {        // break here     }    })  }  Promise.all(results).then(res => {   // do something  })}
查看完整描述

2 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

只有當循環(huán)位于當前函數(shù)內時,您才能從循環(huán)中中斷。如果循環(huán)在函數(shù)之外(例如,.then回調),您就無法擺脫它。


而不是使用.then,將awaited 字符串分配給一個變量并檢查它(并確保檢查字符串,而'THE END'不是results數(shù)組):


async something() {

  const results = [];

  for (let i = 0;i < 999;i++) {;

    const string = await rp('/api?id=1page='+i);

    results.push(string);

    if(string === 'THE END') {

      break;

    }

  }

  // do something with results

}

請注意,由于您將解析的值本身推送到results數(shù)組,因此無需調用Promise.all數(shù)組。


查看完整回答
反對 回復 2022-06-16
?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

考慮到這rp是請求您的網(wǎng)址的功能,這是我能想到的最簡單的答案。


let results = []

  for (let i = 0;i < 999;i++) {//if i is greater than or equal 999, the loop will end

    await rp('/api?id=1page='+i).then(string => {

     results.push(string)

     if(results === 'THE END') {

        //do stuffs you need to do

        // break here

        i = 1000;

     }

    })

  }


查看完整回答
反對 回復 2022-06-16
  • 2 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號