es6 promise

看個(gè)對(duì)ajax的簡(jiǎn)單模仿,當(dāng)然真正的ajax并不是這樣實(shí)現(xiàn)的:

function ajax(object){ //
  console.log("start ajax --------");
  object.success("data is '" + object.data + "' and acrossAjax");
}

ajax({
  data: 'milk',
  success: (data) => {
    console.log(data);
  }
});

控制臺(tái) 輸出:
start ajax --------
data is 'milk' and acrossAjax

當(dāng)我們?cè)谝粋€(gè)ajax 中依賴上一個(gè)請(qǐng)求的參數(shù)需要進(jìn)行下一次的ajax請(qǐng)求時(shí)會(huì)怎么做呢?

ajax({
  data: 'milk',
  success: (data) => {
    console.log(data);
    ajax({
      data: data,
      success: (data) => {
        console.log(data);
     }
  });
  }
});

控制臺(tái)輸出:
start ajax --------
data is 'milk' byAjax
start ajax --------
data is 'data is 'milk' byAjax' byAjax

這樣子看起來(lái) 代碼已經(jīng)不太直觀了,層層嵌套。這還只是兩層,如果是三層 或則更多呢? 這就引出了promise
再讓我們來(lái)看看promise 對(duì)這種情況是怎么實(shí)現(xiàn)的

/*********************** es6 promise start ********************/

function ajax(object){ // 封裝一個(gè)支持promise的ajax
  let promise = new Promise((resolve, reject) => {
    console.log('start promise -----');
    resolve("data is '" + object.data + "' byAjax");
});
  return promise;
}

ajax({
  data: 'milk',
})
.then((data) => {
  console.log(data);
  return data; // 返回普通變量對(duì)象 這時(shí)then返回的是一個(gè)初始的promise對(duì)象,不是ajax 這個(gè)
})
.then((data) => {
  console.log(data);
  return ajax({data: data}); // 返回新的 ajax promise對(duì)象
})
.then((data) => {
  console.log(data);
});

控制臺(tái)輸出:
start promise -----
data is 'milk' byAjax
data is 'milk' byAjax
start promise -----
data is 'data is 'milk' byAjax' byAjax

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

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

  • ES6 Promise 用法講解 Promise是一個(gè)構(gòu)造函數(shù),自己身上有all、reject、resolve這幾...
    這刻我懂了閱讀 698評(píng)論 0 1
  • ES6 Promise 用法講解 Promise是一個(gè)構(gòu)造函數(shù),自己身上有all、reject、resolve這幾...
    Marting424閱讀 370評(píng)論 1 0
  • promise 的由來(lái) 有時(shí)候我們做ajax請(qǐng)求,可能會(huì)遇到以下這種情況requsetA > requsetB >...
    kuohao閱讀 495評(píng)論 0 1
  • 參考深入理解 Promise 五部曲 -- 1.異步問(wèn)題[http://www.ghostchina.com/pr...
    合肥黑閱讀 2,432評(píng)論 0 14
  • Promise是一個(gè)構(gòu)造函數(shù),自己身上有all、reject、resolve這幾個(gè)眼熟的方法,原型上有then、c...
    泡泡糖_966c閱讀 380評(píng)論 0 0

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