promise —— js異步處理對象
基本上無害
發(fā)布于 云南 2020-05-31 · 3.3w瀏覽 7贊

最近頻繁地使用 js 的 promise 的異步處理對象,來解決相對復(fù)雜的異步問題,記個(gè)筆記


首先 JavaScript 是一種單線程語言,導(dǎo)致JavaScript的所有網(wǎng)絡(luò)操作,瀏覽器事件,都必須是異步執(zhí)行。

一般而言,異步執(zhí)行可以用回調(diào)函數(shù)來實(shí)現(xiàn):

使用回調(diào)函數(shù)來實(shí)現(xiàn)異步


可見,異步操作會(huì)在將來的某個(gè)時(shí)間點(diǎn)觸發(fā)一個(gè)函數(shù)調(diào)用。古人云:“君子一諾千金”,這種“承諾將來會(huì)執(zhí)行”的對象在JavaScript中稱為Promise對象。Promise有各種開源實(shí)現(xiàn),在ES6中被統(tǒng)一規(guī)范,由瀏覽器直接支持。

Promise 對象是一個(gè)代理對象(代理一個(gè)值),被代理的值在Promise對象創(chuàng)建時(shí)可能是未知的。它允許你為異步操作的成功和失敗分別綁定相應(yīng)的處理方法(handlers)。 這讓異步方法可以像同步方法那樣返回值,但并不是立即返回最終執(zhí)行結(jié)果,而是一個(gè)能代表未來出現(xiàn)的結(jié)果的promise對象。

一個(gè) Promise 有以下幾種狀態(tài):

pending: 初始狀態(tài),既不是成功,也不是失敗狀態(tài)。

fulfilled: 意味著操作成功完成。

rejected: 意味著操作失敗。

通過完成 promise 對象在這幾種狀態(tài)之間的轉(zhuǎn)換,即可完成異步操作。并且因?yàn)?nbsp;Promise.prototype.then 和  Promise.prototype.catch 方法返回 promise 對象, 所以它們可以被鏈?zhǔn)秸{(diào)用。


使用 promise 對象進(jìn)行異步操作

基本上無害
火星宛如雪花,從42號有軌電車車頂?shù)墓渭娖魃巷w落而下。
瀏覽 3.3w
7 收藏 1
相關(guān)推薦
最新評論
贊過的人 7
評論加載中...

暫無評論,快來評論吧!