国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES6---Promise對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了ES6---Promise對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前端的一個(gè)必學(xué)知識(shí)之一,Promise對(duì)象,是一種用來(lái)解決異步編程的方案

特點(diǎn):
1.對(duì)象的狀態(tài)不受外界影響。Promise對(duì)象代表一個(gè)異步操作,有三種狀態(tài):pending(進(jìn)行中)、fulfilled(已成功)和rejected(已失?。?/span>
只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種狀態(tài),任何其他操作都無(wú)法改變這個(gè)狀態(tài)。
?
2.一旦狀態(tài)改變,就不會(huì)再變。任何時(shí)候都可以得到這個(gè)結(jié)果。
狀態(tài)改變只有兩種可能:從pending變?yōu)?span style="font-family: monospace">fulfilled和從pending變?yōu)?span style="font-family: monospace">rejected。
只要這兩種情況發(fā)生,狀態(tài)就凝固了,不會(huì)再變了,會(huì)一直保持這個(gè)結(jié)果,稱為:定型(resolved)
?
3.缺點(diǎn):無(wú)法取消,一旦創(chuàng)建便立即執(zhí)行;必須設(shè)置回調(diào)函數(shù),否則promise內(nèi)部會(huì)報(bào)錯(cuò),但是不反應(yīng)到外部來(lái);處于pending狀態(tài)無(wú)法知道當(dāng)前異步操作處于剛開(kāi)始狀態(tài)還是即將完成的狀態(tài)。
?
4.基本用法
const promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 異步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

promise.then(function(value) {
  // success
}, function(error) {
  // failure
});//then的第二個(gè)參數(shù)為可選

舉幾個(gè)例子

function timeout(ms) {
  return new Promise((resolve, reject) => {
      //setTImeout的第三個(gè)參數(shù),作為resolve函數(shù)的參數(shù)
    setTimeout(resolve, ms, 'done');
  });
}

//調(diào)用函數(shù),值100為setTImeout的時(shí)間,若異步狀態(tài)為fulfilled則返回傳遞給resolve的值
timeout(100).then((value) => {
  console.log(value);
});

?

let promise = new Promise(function(resolve, reject) {
  console.log('Promise');
  resolve();
});

promise.then(function() {
  console.log('resolved.');
});

console.log('Hi!');

// Promise
// Hi!
// resolved

/*原因:
*promise在創(chuàng)建后便會(huì)立即執(zhí)行,因此首先打印Promise
*then返回返回異步回調(diào)函數(shù),所以執(zhí)行放在后面,因此Hi提前到第二個(gè)執(zhí)行
*/

?

5.Promise.prototype.then(),
當(dāng)promise對(duì)象返回狀態(tài)為resolved時(shí),則會(huì)調(diào)用then的回調(diào)函數(shù)
a.其返回的是一個(gè)新的promise對(duì)象
b.可用鏈?zhǔn)綄?xiě)法書(shū)寫(xiě),
c.一個(gè)promise后面可以跟n個(gè)then回調(diào)函數(shù)
getJSON("/posts.json").then(function(json) {
  return json.post;
}).then(function(post) {
  // ...
});
/*
*上面的代碼使用then方法,依次指定了兩個(gè)回調(diào)函數(shù)。
*第一個(gè)回調(diào)函數(shù)完成以后,會(huì)將返回結(jié)果作為參數(shù),傳入第二個(gè)回調(diào)函數(shù)。
*/
?
6.Promise.prototype.catch()
當(dāng)promise對(duì)象返回的狀態(tài)為rejected時(shí),則會(huì)調(diào)用catch回調(diào)函數(shù)
a.特點(diǎn)同then函數(shù)相同,鏈?zhǔn)骄幊?,返回值為promise,可以跟進(jìn)多個(gè)catch回調(diào)函數(shù)
const promise = new Promise(function(resolve, reject) {
  throw new Error('test');//拋出一個(gè)錯(cuò)誤,即狀態(tài)轉(zhuǎn)為reject
});
promise.catch(function(error) {
  console.log(error);// Error: test
});

?

const promise = new Promise(function(resolve, reject) {
  . . .
}).then(function(){. . .})
.then(function(){. . .})
.catch(function(error){//處理前面promise對(duì)象以及回調(diào)的兩個(gè)then函數(shù)的錯(cuò)誤});

?幾個(gè)注意的點(diǎn),

a.catch函數(shù)返回為promise對(duì)象,所以后面也可以跟進(jìn)then函數(shù),但前面的catch函數(shù)不會(huì)捕獲后面的then函數(shù)的錯(cuò)誤

const promise = new Promise(function(resolve, reject) { . . . })
.catch(function(error){//處理前面promise對(duì)象的錯(cuò)誤})
.then(function(){...});//這里的then函數(shù)的錯(cuò)誤不會(huì)被catch捕獲,

?因此一般將catch函數(shù)寫(xiě)在所以then函數(shù)的后面,方便捕獲整個(gè)promise及then函數(shù)的錯(cuò)誤

b.catch函數(shù)也可以拋出錯(cuò)誤,但catch函數(shù)拋出的錯(cuò)誤只能由后一個(gè)catch函數(shù)捕獲

const promise = new Promise(function(resolve, reject) { . . . })
.catch(function(error){throw new Error('test');})//catch拋出一個(gè)錯(cuò)誤
.catch(function(){...});//這里的catch函數(shù)可以捕獲前面promise的錯(cuò)誤以及catch的錯(cuò)誤

?

7.promise.all()

用來(lái)將多個(gè)promise對(duì)象包裝成一個(gè)promise對(duì)象

const p = Promise.all([p1, p2, p3]);
?
----未完待續(xù)---
備注:以上學(xué)習(xí)參考至https://es6.ruanyifeng.com/#docs/promise#
?

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-711250.html

?
?

到了這里,關(guān)于ES6---Promise對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ES6基礎(chǔ)知識(shí)三:對(duì)象新增了哪些擴(kuò)展?

    ES6基礎(chǔ)知識(shí)三:對(duì)象新增了哪些擴(kuò)展?

    一、屬性的簡(jiǎn)寫(xiě) ES6中,當(dāng)對(duì)象鍵名與對(duì)應(yīng)值名相等的時(shí)候,可以進(jìn)行簡(jiǎn)寫(xiě) 方法也能夠進(jìn)行簡(jiǎn)寫(xiě) 在函數(shù)內(nèi)作為返回值,也會(huì)變得方便很多 注意:簡(jiǎn)寫(xiě)的對(duì)象方法不能用作構(gòu)造函數(shù),否則會(huì)報(bào)錯(cuò) 二、屬性名表達(dá)式 ES6 允許字面量定義對(duì)象時(shí),將表達(dá)式放在括號(hào)內(nèi) 表達(dá)式還可以

    2024年02月15日
    瀏覽(25)
  • ES6 Promise 詳解

    ES6 Promise 詳解

    目錄 一、Promise基本介紹 二、Promise實(shí)現(xiàn)多次請(qǐng)求 ? ? ? ? 1.傳統(tǒng)Ajax方式實(shí)現(xiàn)多次請(qǐng)求 :? ? ? ? ? ? ? 1.1 json數(shù)據(jù)準(zhǔn)備 ? ? ? ? ? ? 1.2 JQuery操作Ajax ? ? ? ? 2.使用ES6新特性Promise方式?:? 三、Promise代碼重排優(yōu)化 ? ? ? ? 1.問(wèn)題分析 :? ? ? ? ? 2.代碼優(yōu)化 :? ? ? ? ? ? ? 2

    2024年02月08日
    瀏覽(23)
  • ES6 -   promise(1)

    ES6 - promise(1)

    今天決定對(duì)之前學(xué)過(guò)的一些前端的知識(shí)進(jìn)行梳理和總結(jié),因?yàn)樽罱际仟?dú)自承擔(dān)項(xiàng)目的開(kāi)發(fā)與搭建,所以先從前后端交互的第一線axios來(lái)梳理,復(fù)習(xí)axios首先一定要先復(fù)習(xí)promise對(duì)象。 promise對(duì)象是ES6新引入的一個(gè)解決異步編程的方案。首先我們要知道前端比較常見(jiàn)的兩種異步編

    2024年02月08日
    瀏覽(30)
  • ES6-10:Promise

    前端開(kāi)發(fā)因?yàn)榫W(wǎng)絡(luò)交互的存在,產(chǎn)生了一種最常見(jiàn)的獨(dú)特場(chǎng)景——異步,即程序執(zhí)行的過(guò)程并非完全按照代碼的書(shū)寫(xiě)順序執(zhí)行。異步編程的解決方法有①回調(diào)函數(shù)、②事件、③Promise、④觀察者對(duì)象; Promise是ES6提供的一種異步編程的一種解決方案。簡(jiǎn)單來(lái)書(shū)就是一個(gè)容器,里

    2024年02月08日
    瀏覽(29)
  • 【ES6】Promise.all用法

    【ES6】Promise.all用法

    Promise.all()方法用于將多個(gè) Promise 實(shí)例,包裝成一個(gè)新的 Promise 實(shí)例。 上面代碼中,Promise.all()方法接受一個(gè)數(shù)組作為參數(shù),p1、p2、p3都是 Promise 實(shí)例,如果不是,就會(huì)先調(diào)用下面講到的Promise.resolve方法,將參數(shù)轉(zhuǎn)為 Promise 實(shí)例,再進(jìn)一步處理。另外,Promise.all()方法的參數(shù)可以

    2024年02月09日
    瀏覽(18)
  • 【ES6】Promise.allSettled的用法

    【ES6】Promise.allSettled的用法

    Promise.allSettled() 是一個(gè)Promise方法,用于處理一個(gè)Promise數(shù)組,返回一個(gè)新的Promise數(shù)組,每個(gè)元素對(duì)應(yīng)原始Promise的狀態(tài)。這個(gè)方法可以用于處理多個(gè)異步操作,并且能夠獲取每個(gè)操作的結(jié)果和狀態(tài)。 下面是Promise.allSettled()的詳細(xì)代碼示例: 輸出結(jié)果: 在上面的代碼中,我們創(chuàng)

    2024年02月10日
    瀏覽(23)
  • 【ES6】Promise.race的用法

    【ES6】Promise.race的用法

    Promise.race()方法同樣是將多個(gè) Promise 實(shí)例,包裝成一個(gè)新的 Promise 實(shí)例。 上面代碼中,只要p1、p2、p3之中有一個(gè)實(shí)例率先改變狀態(tài),p的狀態(tài)就跟著改變。那個(gè)率先改變的 Promise 實(shí)例的返回值,就傳遞給p的回調(diào)函數(shù)。 Promise.race()方法的參數(shù)與Promise.all()方法一樣,如果不是 Pr

    2024年02月10日
    瀏覽(20)
  • 【ES6】fetch函數(shù)和Promise

    fetch函數(shù)是現(xiàn)代JavaScript中用于發(fā)起HTTP請(qǐng)求的一個(gè)非常強(qiáng)大的工具。它返回一個(gè)Promise,這個(gè)Promise在請(qǐng)求成功時(shí)解析為Response對(duì)象,或者在請(qǐng)求失敗時(shí)拒絕。 以下是一個(gè)基本的fetch使用示例: 在這個(gè)例子中,我們首先向https://api.example.com/data發(fā)起一個(gè)GET請(qǐng)求。然后,我們檢查響應(yīng)

    2024年02月09日
    瀏覽(22)
  • ES6 Promise/Async/Await使用

    Promise應(yīng)用 在工作中, 我們經(jīng)常會(huì)遇到用異步請(qǐng)求數(shù)據(jù), 查詢一個(gè)結(jié)果, 然后把返回的參數(shù)放入到下一個(gè)執(zhí)行的異步函數(shù)像這樣: 當(dāng)我們使用Promise后, 我們的程序就變成了這樣: 控制臺(tái)輸出如下: async/await應(yīng)用 看是不是簡(jiǎn)潔很多了, 如果你不想使用這種鏈?zhǔn)秸{(diào)用, 也可以結(jié)合async/

    2024年02月12日
    瀏覽(21)
  • 你是怎么理解ES6中 Promise的?使用場(chǎng)景?

    你是怎么理解ES6中 Promise的?使用場(chǎng)景?

    Promise ,譯為承諾,是異步編程的一種解決方案,比傳統(tǒng)的解決方案(回調(diào)函數(shù))更加合理和更加強(qiáng)大 在以往我們?nèi)绻幚矶鄬赢惒讲僮鳎覀兺鶗?huì)像下面那樣編寫(xiě)我們的代碼 閱讀上面代碼,是不是很難受,上述形成了經(jīng)典的回調(diào)地獄 現(xiàn)在通過(guò) Promise 的改寫(xiě)上面的代碼 瞬

    2024年03月15日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包