成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

我不得不知道的promise知識(shí)點(diǎn)

crelaber / 3180人閱讀

摘要:值得注意的一點(diǎn)是,不僅僅可以傳一個(gè)進(jìn)去,他還可以傳對(duì)象和對(duì)象。方法返回一個(gè)以給定值解析后的對(duì)象。

文章背景:前幾天在讀給某個(gè)同事提了一個(gè)很蠢的問(wèn)題,然后被吐槽api不熟悉,于是決定寫(xiě)一篇文章整理一下在開(kāi)發(fā)&學(xué)習(xí)過(guò)程中promise一些需要了解的特性.

我當(dāng)時(shí)的問(wèn)題

我當(dāng)時(shí)沒(méi)看懂什么意思,后來(lái)理解了這段話要表達(dá)的是,如果直接在一個(gè)不知道是否返回標(biāo)準(zhǔn)promsie的值上面直接調(diào)用then ,可能會(huì)產(chǎn)生報(bào)錯(cuò)。

正題
1promise的控制反轉(zhuǎn)
例子:
定義一個(gè)把promise的回調(diào)暴露出來(lái)的方法

module.exports = function createExposedPromise () {
  let resolve, reject
  const promise = new Promise((rs, rj) => {
    resolve = rs
    reject = rj
  })
  return {
    promise,
    executor: {
      resolve,
      reject
    }
  }
}

使用

  const AEMonitorServer = createScriptMonitor(
    AE_SCRIPT_MONITOR_DEFUALTS.host,
    AE_SCRIPT_MONITOR_DEFUALTS.port,
    data => handleMonitorMessage(data, statusPromiseMap, quickLogger),
    error => handleMonitorError(error, AEMonitorErrorPromise.executor.reject)
  )

當(dāng)我們promise的狀態(tài)依賴于另外一個(gè)異步事件,但是另外一個(gè)異步事件是cb形式的,為了和我們外部的promise建立聯(lián)系,我們就使用promise的控制反轉(zhuǎn)的功能實(shí)現(xiàn).把promise的reject和resolve暴露出來(lái),就可以在cb里面改變promise的狀態(tài)了。

2
promise.resolve
值得注意的一點(diǎn)是,resolve不僅僅可以傳一個(gè)value進(jìn)去 ,他還可以傳 promsie對(duì)象和thnable對(duì)象。

mdn 
https://developer.mozilla.org...
Promise.resolve(value)方法返回一個(gè)以給定值解析后的Promise 對(duì)象。但如果這個(gè)值是個(gè)thenable(即帶有then方法),返回的promise會(huì)“跟隨”這個(gè)thenable的對(duì)象,采用它的最終狀態(tài)(指resolved/rejected/pending/settled);如果傳入的value本身就是promise對(duì)象,則該對(duì)象作為Promise.resolve方法的返回值返回;否則以該值為成功狀態(tài)返回promise對(duì)象。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/109646.html

相關(guān)文章

  • 前端基礎(chǔ)進(jìn)階(十三):透徹掌握Promise使用,讀這篇就夠了

    摘要:在對(duì)象的構(gòu)造函數(shù)中,將一個(gè)函數(shù)作為第一個(gè)參數(shù)。二對(duì)象中的方法,可以接收構(gòu)造函數(shù)中處理的狀態(tài)變化,并分別對(duì)應(yīng)執(zhí)行。 showImg(https://segmentfault.com/img/remote/1460000008932857); Promise的重要性我認(rèn)為我沒(méi)有必要多講,概括起來(lái)說(shuō)就是必須得掌握,而且還要掌握透徹。這篇文章的開(kāi)頭,主要跟大家分析一下,為什么會(huì)有Promise...

    yy736044583 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門(mén),覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • [譯] 深入理解 Promise 五部曲:5. LEGO

    摘要:一個(gè)就像一個(gè)樂(lè)高玩具。問(wèn)題是不是你小時(shí)候玩兒的那個(gè)有趣,它們不是充滿想象力的打氣筒,也不是一種樂(lè)高玩具。這是對(duì)的并不是給開(kāi)發(fā)者使用的,它們是給庫(kù)作者使用的。不會(huì)超過(guò)這兩種情況。第二個(gè)是根據(jù)第一個(gè)處理函數(shù)如何運(yùn)行來(lái)自動(dòng)變成狀態(tài)成功或者失敗。 原文地址:http://blog.getify.com/promis... 在 Part4:擴(kuò)展問(wèn)題 中,我討論了如何擴(kuò)展和抽象Promise是多么...

    LiveVideoStack 評(píng)論0 收藏0
  • JavaScript 運(yùn)行機(jī)制詳解(理解同步、異步和事件循環(huán))

    摘要:從異步過(guò)程的角度看,函數(shù)就是異步過(guò)程的發(fā)起函數(shù),事件監(jiān)聽(tīng)函數(shù)就是異步過(guò)程的回調(diào)函數(shù)。事件觸發(fā)時(shí),表示異步任務(wù)完成,會(huì)將事件監(jiān)聽(tīng)器函數(shù)封裝成一條消息放到消息隊(duì)列中,等待主線程執(zhí)行。 1.為什么JavaScript是單線程? JavaScript語(yǔ)言的一大特點(diǎn)就是單線程,也就是說(shuō),同一個(gè)時(shí)間只能做一件事。那么,為什么JavaScript不能有多個(gè)線程呢?這樣能提高效率啊。JavaScrip...

    loonggg 評(píng)論0 收藏0
  • ES6,你得不學(xué)!

    摘要:但是,的本質(zhì)仍然是函數(shù),是構(gòu)造函數(shù)的另外一種寫(xiě)法。報(bào)錯(cuò)原生構(gòu)造函數(shù)的繼承對(duì)于一些原生的構(gòu)造函數(shù),比如,,,等,在是無(wú)法通過(guò)方法實(shí)現(xiàn)原生函數(shù)的內(nèi)部屬性,原生函數(shù)內(nèi)部的無(wú)法綁定,內(nèi)部屬性獲得不了。 在沒(méi)有學(xué)習(xí) ES6 之前,學(xué)習(xí) React,真的是一件非常痛苦的事情。即使之前你對(duì) ES5 有著很好的基礎(chǔ),包括閉包、函數(shù)、原型鏈和繼承,但是 React 中已經(jīng)普遍使用 ES6 的語(yǔ)法,包括 ...

    CKJOKER 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<