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

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

返回回調(diào)或承諾的函數(shù)

返回回調(diào)或承諾的函數(shù)

寶慕林4294392 2022-09-02 21:17:12
我正在構(gòu)建一個庫,我想讓它成為一個,以便消費者可以使用回調(diào)或承諾來調(diào)用我的函數(shù)。最好的方法是什么?
查看完整描述

2 回答

?
人到中年有點甜

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

最好的方法完全取決于用例。


對于軟件中的任何東西來說,“什么是最好的方法”的答案是“視情況而定”。


話雖如此,一種典型的方法是對通過的論點進行分支。如果給出了回調(diào),請使用它,如果沒有,則返回一個 promise。


這里有一個想法(底層邏輯在承諾返回函數(shù)中):doStuff


function myModule(cb) {

  if (cb) {

    doStuff()

      .then(result => cb(null, result))

      .catch(err => cb(err));

  }

  return doStuff();

}

我的2美分:


支持這兩種方法的唯一真正好處是,如果您需要在沒有承諾的情況下支持環(huán)境。


否則,它只是額外的復(fù)雜性,沒有必要。


現(xiàn)在,您必須在代碼中維護兩倍的邏輯。


此外,具有不一致的返回類型或以不一致的方式運行的函數(shù)(promise使用微任務(wù),而其他異步機制可能使用常規(guī)任務(wù))并不是特別有益。


微妙的不一致不是通常想要的功能。


查看完整回答
反對 回復(fù) 2022-09-02
?
繁華開滿天機

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

你總是可以回報一個承諾,不會破壞任何東西。檢測是否定義了回調(diào),如果定義了,則執(zhí)行它。


function doubleIt(x, callback) {

  return new Promise( (resolve) => {

    var ans = x * 2

    resolve(ans)

    callback && callback(ans)

  })

}


doubleIt(4).then(res => console.log(res))


doubleIt(10, res => console.log(res))


查看完整回答
反對 回復(fù) 2022-09-02
  • 2 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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