国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

promise學(xué)習(xí)(2)

firim / 696人閱讀

摘要:所謂的能對狀態(tài)進(jìn)行操作的特權(quán)方法,指的就是能對對象的狀態(tài)進(jìn)行等調(diào)用的方法,而通常的的話只能在通過構(gòu)造函數(shù)傳遞的方法之內(nèi)對對象的狀態(tài)進(jìn)行操作。一般會在構(gòu)造函數(shù)中編寫邏輯,什么時(shí)候執(zhí)行回調(diào),什么時(shí)候執(zhí)行回調(diào)。

原文地址

1. 在then中使用reject
如果一個(gè)promise最初只定義了resolve,但是還想要使用reject怎么辦?

可以在then中返回一個(gè)新的promise。這個(gè)retPromise 對象狀態(tài)為Rejected的時(shí)候,會調(diào)用后面then中的 onRejected 方法,這樣就實(shí)現(xiàn)了即使在then 中不使用 throw 也能進(jìn)行reject處理了。

var onRejected = console.error.bind(console);
var promise = Promise.resolve();
promise.then(function () {
    var retPromise = new Promise(function (resolve, reject) {
       reject(new Error("this promise is rejected"));
    });
    return retPromise;
}).catch(onRejected);
// 使用Promise.reject還可以簡化書寫
var onRejected = console.error.bind(console);
var promise = Promise.resolve();
promise.then(function () {
    return Promise.reject(new Error("this promise is rejected"));  // 注意 Promise.reject其實(shí)只是new Promise的簡潔寫法   作用是一樣的
}).catch(onRejected);

如果想直接更改promise的狀態(tài),那么使用reject()比使用throw要安全。 如果直接使用throw,就不太容易區(qū)分是主動(dòng)拋出的error,還是代碼中的error。

2. Deferred和Promise之間的關(guān)系

(以jquery.deferred類似實(shí)現(xiàn)為例)

deferredpromise不是競對,deferred包含promisedeferred具備對promise狀態(tài)進(jìn)行操作的特權(quán)方法。

所謂的能對Promise狀態(tài)進(jìn)行操作的特權(quán)方法,指的就是能對promise對象的狀態(tài)進(jìn)行resolve、reject等調(diào)用的方法,而通常的Promise的話只能在通過構(gòu)造函數(shù)傳遞的方法之內(nèi)對promise對象的狀態(tài)進(jìn)行操作。

Promise 一般會在構(gòu)造函數(shù)中編寫邏輯,什么時(shí)候執(zhí)行fulfilled回調(diào),什么時(shí)候執(zhí)行rejected回調(diào)。但是deferred只要定義一個(gè)對象之后,可以在任意時(shí)間調(diào)用resolve或者reject方法。

deferred最后返回return deferred.promise 可以繼續(xù)鏈?zhǔn)秸{(diào)用。

換句話說,Promise代表了一個(gè)對象,這個(gè)對象的狀態(tài)現(xiàn)在還不確定,但是未來一個(gè)時(shí)間點(diǎn)它的狀態(tài)要么變?yōu)檎V?b>(FulFilled),要么變?yōu)楫惓V?b>(Rejected);而Deferred對象表示了一個(gè)處理還沒有結(jié)束的這種事實(shí),在它的處理結(jié)束的時(shí)候,可以通過Promise來取得處理結(jié)果。

3. thenable對象

thenable對象可以通過Promise.resolve轉(zhuǎn)化成Promise對象。thenable對象就是一個(gè)具有 .then方法的一個(gè)對象。那么普通的callback也可以通過添加then方法變成thenable對象,這個(gè)轉(zhuǎn)換過程是在resolve中進(jìn)行的,轉(zhuǎn)換中添加的then方法與后面使用 .then異步執(zhí)行回調(diào)的then不是同一回事。

Todos:

promise 任務(wù)隊(duì)列原理

promise擴(kuò)展庫是如何獲取promise的狀態(tài)以及取消promise動(dòng)作的

promise反模式

4. 學(xué)習(xí)方法

學(xué)習(xí)之前要對所學(xué)的東西有個(gè)總體上的計(jì)劃和步驟,有條理有重點(diǎn)的去開展。邊學(xué)習(xí)邊記錄的方法雖然也沒錯(cuò),但是當(dāng)你看完之后發(fā)現(xiàn)知識點(diǎn)都是零散的,也還是需要整理匯總。

由點(diǎn)到面再到點(diǎn),這樣后續(xù)總結(jié)回顧的時(shí)候也能夠很清楚的找到重點(diǎn)和難點(diǎn)。

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96702.html

相關(guān)文章

  • Promise源碼學(xué)習(xí)2

    摘要:源碼學(xué)習(xí)本篇為上一篇源碼學(xué)習(xí)的補(bǔ)充,主要是來介紹和方法。那個(gè)率先改變的實(shí)例的返回值,就傳遞給的回調(diào)函數(shù)?;窘榻B可見阮一峰老師的書籍。的狀態(tài)由決定,分成兩種情況。只有的狀態(tài)都變成,的狀態(tài)才會變成,此時(shí)的返回值組成一個(gè)數(shù)組,傳遞給的回調(diào)函數(shù)。 Promise源碼學(xué)習(xí)(2) 本篇為上一篇源碼學(xué)習(xí)(1)的補(bǔ)充,主要是來介紹Promise.all()和Promise.race()方法。閑話少敘...

    cfanr 評論0 收藏0
  • 嗨,了解一下,我的Promise學(xué)習(xí)筆記

    摘要:回調(diào)函數(shù)成功回調(diào)處理器失敗回調(diào)處理器用戶發(fā)送一個(gè)向百度服務(wù)器獲取數(shù)據(jù)的異步請求無阻塞高并發(fā)的的誕生更加嚴(yán)重的依賴異步操作才能完成無阻賽高并發(fā)的特性。 Promise Promise 是什么? 詞語本意: 發(fā)音:[?pr?m?s] 詞性:名詞, 翻譯:許諾,允諾。 MDN解釋 Promise 對象用于一個(gè)異步操作。 一個(gè)Promise表示一個(gè)現(xiàn)在,將來或永不可能可用的值。 按照書寫方...

    yanest 評論0 收藏0
  • 深入學(xué)習(xí)Promise調(diào)用鏈

    摘要:前言使用中,鏈?zhǔn)降恼{(diào)用對于控制異步執(zhí)行很重要。的鏈?zhǔn)秸{(diào)用是支持鏈?zhǔn)秸{(diào)用的,但是它是不同于上面的鏈?zhǔn)?。是調(diào)用方法返回自身,但是是調(diào)用方法后返回一個(gè)新的。的運(yùn)行機(jī)制請參考的運(yùn)行機(jī)制值穿透由于通過沒有成功添加回調(diào)函數(shù),發(fā)生了值穿透。 前言 使用Promise中,鏈?zhǔn)降恼{(diào)用對于控制異步執(zhí)行很重要。 鏈?zhǔn)秸{(diào)用 在jQuery的使用中,我們常常使用下面的代碼 $(#app).show().css(...

    tianren124 評論0 收藏0
  • Promise源碼學(xué)習(xí)(1)

    摘要:工作當(dāng)中經(jīng)常會用到,在此進(jìn)行深入學(xué)習(xí)異步編程解決方案是異步編程的一種解決方案,比傳統(tǒng)的解決方案回調(diào)函數(shù)和事件更合理和更強(qiáng)大。所有源碼注釋見學(xué)習(xí)筆記 工作當(dāng)中經(jīng)常會用到Promise,在此進(jìn)行深入學(xué)習(xí) 異步編程解決方案 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了...

    young.li 評論0 收藏0
  • promise學(xué)習(xí)(3)

    摘要:此時(shí),由于只有一個(gè)的狀態(tài)能夠確定,所以執(zhí)行的是唯一那個(gè)確定狀態(tài)的函數(shù),而不會執(zhí)行其他的,但是并不會阻止其他的執(zhí)行。在實(shí)際應(yīng)用中,常用來設(shè)置超時(shí)操作,比如接口請求超時(shí)等。思考這個(gè)其實(shí)并不是矛盾,接受的是返回的的狀態(tài),與原來的沒有關(guān)系。 原文地址 Promise.race // `delay`毫秒后執(zhí)行resolve function timerPromisefy(delay) { ...

    阿羅 評論0 收藏0

發(fā)表評論

0條評論

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