關(guān)于Promise的一個(gè)測試題

我們知道Promise是一個(gè)高階函數(shù),Promise可以作為參數(shù)繼續(xù)傳參Promise,那么我出這樣一道題你會不會繞進(jìn)去呢?希望你沒有!

第一題的重點(diǎn):練習(xí)返回一個(gè)resolve

function foo() {
  return Promise.resolve('aaa')
          .then(data => { console.log("then1: ", data); })
          .then(data => { console.log("then2: ", data); return 'bbb'; })
          .then(data => { console.log("then3: ", data); return Promise.resolve('ccc'); })
          .catch(err => { console.log("eee"); return Promise.reject('eee'); });
}

console.log("111")
foo()
  .then(data => { console.log("333: ", data); })
  .catch(err => { console.log("eee"); return 'ggg' });
console.log("222")

第二題的重點(diǎn):練習(xí)返回一個(gè)reject

function foo() {
  return Promise.resolve('aaa')
          .then(data => { console.log("then1: ", data); })
          .then(data => { console.log("then2: ", data); return 'bbb'; })
          .then(data => { console.log("then3: ", data); return Promise.reject('ccc'); })
          .catch(err => { console.log("eeee1: ", err);  return Promise.reject('ddd'); });
}

console.log("111")
foo()
  .then(data => { console.log("333: ", data); })
  .catch(err => { console.log("eeee2"); return 'ggg' });
console.log("222")

到這里,我建議你先不要直接拷貝到編輯器運(yùn)行,而是稍作思考,然后直接把答案寫出來,再運(yùn)行也不遲,如果運(yùn)行結(jié)果和你手寫的一樣,那么恭喜你,你已經(jīng)完全掌握了

好了,答案我會放到最后,接下來先復(fù)習(xí)兩個(gè)重要知識點(diǎn):

高階函數(shù)

如果一個(gè)函數(shù)符合下面2個(gè)規(guī)范中的任何一個(gè),那該函數(shù)就是高階函數(shù)

    1. 若A函數(shù),接收的參數(shù)是一個(gè)函數(shù),那么A就可以稱之為高階函數(shù)
    1. 若A函數(shù),調(diào)用的返回值依然是一個(gè)函數(shù),那么A就可以稱之為高階函數(shù)
      常見的高階函數(shù)有:Promise,setTimeout、arr.map 等等
函數(shù)的柯里化

通過函數(shù)調(diào)用繼續(xù)返回函數(shù)的方式,實(shí)現(xiàn)多次接收參數(shù)最后統(tǒng)一處理的函數(shù)編碼形式。

最后直接拋出答案:

第一題答案:

$ node test.js 
111
222
then1:  aaa
then2:  undefined
then3:  bbb
333:  ccc

第二題答案:

$ node test.js 
111
222
then1:  aaa
then2:  undefined
then3:  bbb
eeee1:  ccc
eeee2

點(diǎn)贊加關(guān)注,永遠(yuǎn)不迷路
每天一更新,創(chuàng)作拿命拼

?著作權(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)容

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