摘要:學習地址詳見正文調(diào)用或并不會終結(jié)的參數(shù)函數(shù)的執(zhí)行調(diào)用以后,后面的還是會執(zhí)行,并且會首先打印出來。這是因為立即的是在本輪事件循環(huán)的末尾執(zhí)行,總是晚于本輪循環(huán)的同步任務(wù)。另外,方法指定的回調(diào)函數(shù),如果運行中拋出錯誤,也會被方法捕獲。
學習地址詳見:http://es6.ruanyifeng.com/#do...
正文1.調(diào)用resolve或reject并不會終結(jié) Promise 的參數(shù)函數(shù)的執(zhí)行
new Promise((resolve, reject) => { resolve(1); console.log(2); }).then(r => { console.log(r); }); // 2 // 1
調(diào)用resolve(1)以后,后面的console.log(2)還是會執(zhí)行,并且會首先打印出來。這是因為立即 resolved 的 Promise 是在本輪事件循環(huán)的末尾執(zhí)行,總是晚于本輪循環(huán)的同步任務(wù)。
一般來說,調(diào)用resolve或reject以后,Promise 的使命就完成了,后繼操作應(yīng)該放到then方法里面,而不應(yīng)該直接寫在resolve或reject的后面。所以,最好在它們前面加上return語句,這樣就不會有意外。
2.關(guān)于catch
getJSON("/posts.json").then(function(posts) { // ... }).catch(function(error) { // 處理 getJSON 和 前一個回調(diào)函數(shù)運行時發(fā)生的錯誤 console.log("發(fā)生錯誤!", error); });
上面代碼中,getJSON方法返回一個 Promise 對象,如果該對象狀態(tài)變?yōu)閞esolved,則會調(diào)用then方法指定的回調(diào)函數(shù);如果異步操作拋出錯誤,狀態(tài)就會變?yōu)閞ejected,就會調(diào)用catch方法指定的回調(diào)函數(shù),處理這個錯誤。另外,then方法指定的回調(diào)函數(shù),如果運行中拋出錯誤,也會被catch方法捕獲。
1)狀態(tài)變成reject?的方式有兩個:手動操作 reject() reject方法的作用,等同于拋出錯誤; 異步操作拋出錯誤,狀態(tài)就會變?yōu)閞ejected
2)觸發(fā)catch: 異步操作狀態(tài)變?yōu)閞ejected; then方法運行中拋出錯誤
3)一般來說,不要在then方法里面定義Reject狀態(tài)的回調(diào)函數(shù)(即then的第二個參數(shù)),總是使用catch方法。
思考:第一步出錯,是直接執(zhí)行catch還是接著走then? 直接被catch
3.Promise 內(nèi)部的錯誤不會影響到 Promise 外部的代碼
4.任務(wù)隊列
new Promise是同步的,會馬上執(zhí)行function參數(shù)中的事情。等function參數(shù)執(zhí)行完,new Promise才返回一個promise實例對象。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/89047.html
摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。異步編程入門的全稱是前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個方面。 TypeScript 入門教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識之 HTTP 協(xié)議 詳細介紹 HTT...
摘要:第一個回調(diào)函數(shù)完成以后,會將返回結(jié)果作為參數(shù),傳入第二個回調(diào)函數(shù)。捕獲錯誤方法是的別名,用于指定發(fā)生錯誤時的回調(diào)函數(shù)。處理前一個回調(diào)函數(shù)運行時發(fā)生的錯誤出錯啦對象的錯誤具有冒泡性質(zhì),會一直向后傳遞,直到被捕獲為止。 前言 一直想寫一篇關(guān)于promise的文來總結(jié)一下之前零零散散的promise知識點,趁著工作閑暇,來做個總結(jié)。PS:本文適合有一定JavaScript基礎(chǔ)的童鞋閱讀。 什...
摘要:從現(xiàn)在開始,養(yǎng)成寫技術(shù)博客的習慣,或許可以在你的職業(yè)生涯發(fā)揮著不可忽略的作用。如果想了解更多優(yōu)秀的前端資料,建議收藏下前端英文網(wǎng)站匯總這個網(wǎng)站,收錄了國外一些優(yōu)質(zhì)的博客及其視頻資料。 前言 寫文章是一個短期收益少,長期收益很大的一件事情,人們總是高估短期收益,低估長期收益。往往是很多人堅持不下來,特別是寫文章的初期,剛寫完文章沒有人閱讀會有一種挫敗感,影響了后期創(chuàng)作。 從某種意義上說,...
摘要:從現(xiàn)在開始,養(yǎng)成寫技術(shù)博客的習慣,或許可以在你的職業(yè)生涯發(fā)揮著不可忽略的作用。如果想了解更多優(yōu)秀的前端資料,建議收藏下前端英文網(wǎng)站匯總這個網(wǎng)站,收錄了國外一些優(yōu)質(zhì)的博客及其視頻資料。 前言 寫文章是一個短期收益少,長期收益很大的一件事情,人們總是高估短期收益,低估長期收益。往往是很多人堅持不下來,特別是寫文章的初期,剛寫完文章沒有人閱讀會有一種挫敗感,影響了后期創(chuàng)作。 從某種意義上說,...
摘要:此時,由于只有一個的狀態(tài)能夠確定,所以執(zhí)行的是唯一那個確定狀態(tài)的函數(shù),而不會執(zhí)行其他的,但是并不會阻止其他的執(zhí)行。在實際應(yīng)用中,常用來設(shè)置超時操作,比如接口請求超時等。思考這個其實并不是矛盾,接受的是返回的的狀態(tài),與原來的沒有關(guān)系。 原文地址 Promise.race // `delay`毫秒后執(zhí)行resolve function timerPromisefy(delay) { ...
閱讀 2747·2021-11-02 14:39
閱讀 4491·2021-10-11 10:58
閱讀 1734·2021-09-06 15:12
閱讀 2050·2021-09-01 10:49
閱讀 1470·2019-08-29 18:31
閱讀 2019·2019-08-29 16:10
閱讀 3491·2019-08-28 18:21
閱讀 1013·2019-08-26 10:42