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

資訊專欄INFORMATION COLUMN

promise

learn_shifeng / 1400人閱讀

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

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

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

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

Promise會(huì)立即執(zhí)行, 但是狀態(tài)的改變需要我們來(lá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方法來(lái)觸發(fā)對(duì)應(yīng)的處理方法.

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

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

由于then方法返回的是一個(gè)新的Promise對(duì)象, 所以不會(huì)影響到當(dāng)前的Promise對(duì)象,由于返回來(lái)的是Promise,所以then后面可以then, then, then….無(wú)窮無(wú)盡,這樣完美的避免了 回調(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

因?yàn)槲覀儗懙氖浅绦? 所以經(jīng)常要考慮程序出錯(cuò)的緣故. 就把rejected的函數(shù)捕捉給暴露出來(lái)了就是所謂的catch, 當(dāng)狀態(tài)變?yōu)閞ejected的時(shí)候, catch被調(diào)用

其實(shí)catch就是下面的縮寫

Promise.prototype.then(undefined, onRejected)

看下下面這個(gè)

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)的縮寫, 第一個(gè)參數(shù)為空, 所以catch返回的Promise狀態(tài)為成功

Promise.reject(reson)

返回一個(gè)用reason拒絕的Promsie

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

Promise.resolve()

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

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

Promise.all()

當(dāng)所有參數(shù)中的promise都完成, 或者任意一個(gè)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相反, 只要有一個(gè)狀態(tài)改變, 就會(huì)返回

可以講上面的all換成race來(lái)玩玩.

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

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

相關(guān)文章

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

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

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

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

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

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

    UnixAgain 評(píng)論0 收藏0
  • 實(shí)現(xiàn)Promise

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

    xcc3641 評(píng)論0 收藏0
  • Promise 對(duì)象的理解

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

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

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

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

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

0條評(píng)論

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