js依次發(fā)請求面試題

需求:當有多個url在一個urls數組內,需要在當前請求回來后,再發(fā)出下一次請求。

方法1:

let ajax = function (url) {
  return new Promise(resolve => {
    setTimeout(()=> {
      console.log(url, new Date())
      resolve()
    },1000)
  })
}
let urls = [ 'url1', 'url2', 'url3', 'url4' ]
let p = null
urls.forEach((url,i)=> {
  if (i === 0) {
    p = ajax(url)  //此時p為一個pending的promise對象
  } else {
    p = p.then(()=> {
      return ajax(url)
    })
  }
})

//url1 Tue Feb 23 2021 15:04:33 GMT+0800 (中國標準時間)
//url2 Tue Feb 23 2021 15:04:34 GMT+0800 (中國標準時間)
//url3 Tue Feb 23 2021 15:04:35 GMT+0800 (中國標準時間)
//url4 Tue Feb 23 2021 15:04:36 GMT+0800 (中國標準時間)

方法2:

let ajax = function (url) {
  return new Promise(resolve => {
    setTimeout(()=> {
      console.log(url, new Date())
      resolve()
    },1000)
  })
}
let urls = [ 'url1', 'url2', 'url3', 'url4' ]
let p = Promise.resolve()  //此時p為一個promise對象
urls.forEach((url,i)=> {
  p = p.then(()=> {
    return ajax(url)  //此時p為一個pending的promise對象
  })
})

//url1 Tue Feb 23 2021 15:04:33 GMT+0800 (中國標準時間)
//url2 Tue Feb 23 2021 15:04:34 GMT+0800 (中國標準時間)
//url3 Tue Feb 23 2021 15:04:35 GMT+0800 (中國標準時間)
//url4 Tue Feb 23 2021 15:04:36 GMT+0800 (中國標準時間)
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 整理自:Java面試題全集(上)https://blog.csdn.net/jackfrued/article/d...
    在水之天閱讀 3,207評論 1 24
  • 1、function foo( &$var ){ unset($var); } $a=5; foo($a); va...
    荒唐鏡_6427閱讀 2,175評論 0 1
  • 前端開發(fā)面試題 面試題目: 根據你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,694評論 0 7
  • 一、CSS問題 1.flex布局 display:flex; 在父元素設置,子元素受彈性盒影響,默認排成一行,如果...
    陳二狗想吃肉閱讀 807評論 0 9
  • 推薦指數: 6.0 書籍主旨關鍵詞:特權、焦點、注意力、語言聯想、情景聯想 觀點: 1.統(tǒng)計學現在叫數據分析,社會...
    Jenaral閱讀 6,037評論 0 5

友情鏈接更多精彩內容