一道前端面試題目

題目:

某個應(yīng)用模塊由文本框 input,以及按鈕 A,按鈕 B 組成。點(diǎn)擊按鈕 A,會向地址 urlA 發(fā)出一個 ajax 請求,并將返回的字符串填充到 input 中(覆蓋 input 中原有的數(shù)據(jù)),點(diǎn)擊按鈕 B,會向地址 urlB 發(fā)出一個 ajax 請求,并將返回的字符串填充到 input 中(覆蓋 input 中原有的數(shù)據(jù))。

當(dāng)用戶依次點(diǎn)擊按鈕 A、B 的時(shí)候,預(yù)期的效果是 input 依次被 urlA、urlB 返回的數(shù)據(jù)填充,但是由于到 urlA 的請求返回比較慢,導(dǎo)致 urlB 返回的數(shù)據(jù)被 urlA 返回的數(shù)據(jù)覆蓋了,與用戶預(yù)期的順序不一致。

請問如何設(shè)計(jì)代碼,解決這個問題?
原文見這里:如果你想靠前端技術(shù)還房貸,你不能連這個都不會

使用promise的解決方法如下:

var promise = Promise.resolve()

$('.btn1').click(() => {
  promise = promise.then(() => {
    return new Promise((reslove) => {
      $.ajax({
        url: 'url1', 
        success(res1) {
          $('.input').val(res1)
          reslove()
        }
      })
    })
  })
})

$('.btn2').click(() => {
  promise = promise.then(() => {
    return new Promise((reslove) => {
      $.ajax({
        url: 'url2',
        success(res2) {
          $('.input').val(res2)
          reslove()
        }
      })
    })
  })
})

思路分析:
先定義一個全局的promise對象,并且這個對象的狀態(tài)為完成狀態(tài),然后為按鈕1綁定點(diǎn)擊事件:

當(dāng)點(diǎn)擊按鈕1的時(shí)候在promise的then回掉里面執(zhí)行ajax請求,并重新給promise賦值.然后用同樣的方法為按鈕2綁定點(diǎn)擊事件.

當(dāng)?shù)谝淮吸c(diǎn)擊按鈕1的時(shí)候,promise為完成狀態(tài),所以直接執(zhí)行promise.then方法,并且將promise.then()重新賦值給promise,然后當(dāng)點(diǎn)擊按鈕2的時(shí)候再次為promise重新賦值為promise.then,這兩個操作就相當(dāng)于每次點(diǎn)擊按鈕就為promise添加了一個then方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.一些開放性題目 1.自我介紹:除了基本個人信息以外,面試官更想聽的是你與眾不同的地方和你的優(yōu)勢。 2.項(xiàng)目介紹...
    55lover閱讀 711評論 0 6
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 115,570評論 24 450
  • 【轉(zhuǎn)載】CSDN - 張林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牘閱讀 3,593評論 1 14
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined、Nul...
    極樂君閱讀 5,887評論 0 106
  • 你有沒有過感覺無路可走的時(shí)候? 我有過。 第一次感覺無路可走的時(shí)候,是在中考過后。當(dāng)自己的成績離報(bào)考的學(xué)校十萬八千...
    茨粢思閱讀 153評論 0 0

友情鏈接更多精彩內(nèi)容