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

資訊專欄INFORMATION COLUMN

promise

learn_shifeng / 1397人閱讀

說說promise吧, promise 承諾。Promise的理解就是 我對你做出承諾,我怎么怎么,然后我有可能成功,我做到了, 有可能失敗, 我沒做到, 就是這么個東西.(說的玄一點, 這是一個異步流程控制的一個東東, 至于什么是異步流程控制?我不知道)

new Promise((resolve, reject)=>{})

Promise的狀態(tài)變化有兩種, 從pending —> fulfilled或者 pending—>rejected

pending 是初始的狀態(tài), fulfilled 是成功的狀態(tài), 剩下的就是失敗的狀態(tài)rejected

Promise會立即執(zhí)行, 但是狀態(tài)的改變需要我們來操作。

let abcc = new Promise((resolve, reject)=> {
  console.log("立即執(zhí)行了")
  setTimeout(()=>{
   resolve("ccc")
  },1000)
  setInterval(()=> {
    console.log(abcc)
  },200)
  console.log("立即執(zhí)行了2")
})

then

當(dāng)Promise的狀態(tài)發(fā)生改變,使用then方法來觸發(fā)對應(yīng)的處理方法.

兩個參數(shù): then方法包含兩個參數(shù), 對應(yīng)當(dāng)Promise的狀態(tài)為fulfilled和rejected的回調(diào)函數(shù)

省略參數(shù): 將創(chuàng)建一個沒有其他處理程序的新的Promise,繼承Promise最終的狀態(tài), then被調(diào)用, 第幾個參數(shù)省略,Promise將采用那個狀態(tài)

由于then方法返回的是一個新的Promise對象, 所以不會影響到當(dāng)前的Promise對象,由于返回來的是Promise,所以then后面可以then, then, then….無窮無盡,這樣完美的避免了 回調(diào)地獄.

let o1 = new Promise((resolve,reject) => {
   resolve(1)
})

o1.then((value)=>{
    console.log("value"+ value)   // 1
    console.log(o1)    // resolved 1
   value +=1;
   return value;
}).then((value)=>{
   console.log(value)      //2
console.log(o1)   //resolved 1 
})

catch

因為我們寫的是程序, 所以經(jīng)常要考慮程序出錯的緣故. 就把rejected的函數(shù)捕捉給暴露出來了就是所謂的catch, 當(dāng)狀態(tài)變?yōu)閞ejected的時候, catch被調(diào)用

其實catch就是下面的縮寫

Promise.prototype.then(undefined, onRejected)

看下下面這個

var p1 = new Promise(function(resolve, reject) {
  resolve("Success");
});

p1.then(function(value) {
  console.log(value); // "成功!"
  throw "oh, no!"; or   return Promise.reject("oh no ")
}).catch(function(e) {
  console.log(e); // "oh, no!"  
}).then(function(){
  console.log("after a catch the chain is restored");
}, function () {
  console.log("Not fired due to the catch");
});

catch返回的Promise狀態(tài), 由于catch是then(undefined, onrejected)的縮寫, 第一個參數(shù)為空, 所以catch返回的Promise狀態(tài)為成功

Promise.reject(reson)

返回一個用reason拒絕的Promsie

let o = Promise.reject("sss");
o.catch((reason) => {
  console.log(reason)     // sss
}).then(()=> {
 console.log("resolve")    // 返回這個 理由在上面自己找
}, ()=> {
  console.log("reject")
})

Promise.resolve()

Promise.resolve(value); 正常解析
Promise.resolve(promise);  根據(jù)promise的狀態(tài)來往下傳遞
Promise.resolve(thenable);  根據(jù)then的狀態(tài)來往下傳遞

Promise.resolve("Success").then(function(value) {
  console.log(value); // "Success"
}, function(value) {
  // 不會被調(diào)用
})

Promise.all()

當(dāng)所有參數(shù)中的promise都完成, 或者任意一個promise的狀態(tài)變成reject,返回promise

let o1 = new Promise((resolve,reject)=>{
   resolve("1")
})

let o2 = new Promise((resolve,reject)=>{
   resolve("2")
})

let o3 = new Promise((resolve,reject)=>{
   setTimeout(()=> {
     resolve("3")
   }, 3000)
})

Promise.all([o1, o2, o3]).then((value)=>{
  console.log(value)
}).catch((reason)=>{
  console.log(reason)
})

Promise.race()

和all相反, 只要有一個狀態(tài)改變, 就會返回

可以講上面的all換成race來玩玩.

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

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

相關(guān)文章

  • Promise的幾個擴(kuò)展API總結(jié)

    摘要:的幾個擴(kuò)展總結(jié)描述和相反,當(dāng)所有的被拒絕之后,方法執(zhí)行完成的決議,如果存在一個執(zhí)行完成的決議,方法則執(zhí)行拒絕里邊的所有實例反過來就好了執(zhí)行到此執(zhí)行到此描述忽略被拒絕的,只需要有一個完成的,方法就執(zhí)行完成操作,如果全部的都被拒絕,方法執(zhí)行拒絕 Promise的幾個擴(kuò)展API總結(jié) 1. Promise.none 描述: 和 Promise.all 相反,當(dāng)所有的promise被拒絕之后,n...

    李義 評論0 收藏0
  • Promise 中的三兄弟 .all(), .race(), .allSettled()

    摘要:對于的來說基元函數(shù)包括組合函數(shù)的類型簽名返回情況完成如果傳入的可迭代對象為空,會同步地返回一個已完成狀態(tài)的。相反,如果是在指定的時間之后完成,剛返回結(jié)果就是一個拒絕狀態(tài)的從而觸發(fā)方法指定的回調(diào)函數(shù)。在行中,對每個小任務(wù)得到的結(jié)果進(jìn)行匯總。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 從ES6 開始,我們大都使用的是 P...

    vspiders 評論0 收藏0
  • 異步發(fā)展流程 —— 手寫一個符合 Promise/A+ 規(guī)范的 Promise

    摘要:構(gòu)造函數(shù)的實現(xiàn)我們在使用的時候其實是使用關(guān)鍵字創(chuàng)建了一個的實例,其實是一個類,即構(gòu)造函數(shù),下面來實現(xiàn)構(gòu)造函數(shù)。 showImg(https://segmentfault.com/img/remote/1460000018998456); 閱讀原文 概述 Promise 是 js 異步編程的一種解決方案,避免了 回調(diào)地獄 給編程帶來的麻煩,在 ES6 中成為了標(biāo)準(zhǔn),這篇文章重點不是敘...

    UnixAgain 評論0 收藏0
  • 實現(xiàn)Promise

    摘要:使用是極好的,它是如此有用以至于我覺得應(yīng)該好好研究一下,甚至是實現(xiàn)一個簡易的版本。構(gòu)造函數(shù)檢查參數(shù)例如是不是函數(shù)啊初始化,創(chuàng)建對象執(zhí)行因此構(gòu)造函數(shù)里面?zhèn)魅氲氖橇⒓幢粓?zhí)行的。 使用Promise是極好的,它是如此有用以至于我覺得應(yīng)該好好研究一下Promise,甚至是實現(xiàn)一個簡易的版本。實現(xiàn)之前,我們先來看看Promise的用途: 使用Promise callback hell Promi...

    xcc3641 評論0 收藏0
  • Promise 對象的理解

    摘要:使用對象的好處在于可以將異步操作以同步操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。對象異步操作拋出錯誤,狀態(tài)就會變?yōu)椋蜁{(diào)用方法指定的回調(diào)函數(shù)處理這個錯誤。 Promise 含義 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大。它由社區(qū)最早提出和實現(xiàn),ES6 將其寫進(jìn)了語言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了 Promise 對象。 所謂 P...

    church 評論0 收藏0
  • Promise的源碼實現(xiàn)(完美符合Promise/A+規(guī)范)

    摘要:以上代碼,可以完美通過所有用例。在的函數(shù)中,為何需要這個同樣是因為規(guī)范中明確表示因此我們需要這樣的來確保只會執(zhí)行一次。其他情況,直接返回以該值為成功狀態(tài)的對象。 Promise是前端面試中的高頻問題,我作為面試官的時候,問Promise的概率超過90%,據(jù)我所知,大多數(shù)公司,都會問一些關(guān)于Promise的問題。如果你能根據(jù)PromiseA+的規(guī)范,寫出符合規(guī)范的源碼,那么我想,對于面試...

    gaomysion 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<