Promises處理異步操作

在 JavaScript 中,Promise 是一種用于處理異步操作的工具婿奔。它允許您定義一個函數(shù)问慎,該函數(shù)返回一個 Promise 對象,該對象可以在未來某個時間點解析(成功)或拒絕(失斎绲稹)。當(dāng) Promise 解析時笼恰,您可以執(zhí)行一些回調(diào)函數(shù)來處理結(jié)果;當(dāng) Promise 拒絕時逼龟,您可以執(zhí)行一些錯誤處理代碼追葡。

下面是一個使用 Promise 的示例代碼片段:

function fetchData(url: string): Promise<any> {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.onload = () => {
      if (xhr.status === 200) {
        resolve(xhr.responseText);
      } else {
        reject(new Error(`請求失敗奕短,狀態(tài)碼:${xhr.status}`));
      }
    };
    xhr.onerror = () => {
      reject(new Error('網(wǎng)絡(luò)錯誤'));
    };
    xhr.send();
  });
}

// 使用 Promise 進(jìn)行異步操作
fetchData('https://api.example.com/data')
  .then(response => {
    console.log('請求成功');
    console.log(response);
  })
  .catch(error => {
    console.error('請求失敗');
    console.error(error);
  });

在這個示例中匀钧,我們定義了一個名為 fetchData 的函數(shù),該函數(shù)接受一個 URL 參數(shù)之斯,并返回一個新的 Promise 對象。在 Promise 構(gòu)造函數(shù)內(nèi)部达椰,我們創(chuàng)建了一個新的 XMLHttpRequest 對象翰蠢,并設(shè)置了其 onloadonerror 事件處理器。當(dāng)請求成功時檀何,我們調(diào)用 resolve 函數(shù)并將響應(yīng)數(shù)據(jù)作為參數(shù)傳遞給它廷支;當(dāng)請求失敗時,我們調(diào)用 reject 函數(shù)并將一個包含錯誤信息的對象作為參數(shù)傳遞給它恋拍。

然后,我們在主程序中調(diào)用了 fetchData 函數(shù)周荐,并使用 .then() 方法和 .catch() 方法來處理 Promise 的解析和拒絕情況概作。如果請求成功,我們將輸出一條消息并打印出響應(yīng)數(shù)據(jù)讯榕;如果請求失敗匙睹,我們將輸出一條錯誤消息并打印出錯誤對象罕袋。

請注意,Promise 類是 JavaScript 標(biāo)準(zhǔn)庫的一部分,因此不需要單獨安裝任何依賴狼忱。如果您需要在非瀏覽器環(huán)境中使用類似的功能窘俺,可能需要使用不同的庫或 API。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末均芽,一起剝皮案震驚了整個濱河市单鹿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仲锄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镣奋,死亡現(xiàn)場離奇詭異怀愧,居然都是意外死亡余赢,警方通過查閱死者的電腦和手機哈垢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耘分,“玉大人,你說我怎么就攤上這事央渣】势担” “怎么了芽丹?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵志衍,是天一觀的道長聊替。 經(jīng)常有香客問我,道長惹悄,這世上最難降的妖魔是什么肩钠? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮价匠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坡氯。我一直安慰自己洋腮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布啥供。 她就那樣靜靜地躺著,像睡著了一般涮毫。 火紅的嫁衣襯著肌膚如雪瞬欧。 梳的紋絲不亂的頭發(fā)上罢防,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天篙梢,我揣著相機與錄音顷帖,去河邊找鬼渤滞。 笑死,一個胖子當(dāng)著我的面吹牛陶舞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肿孵,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼疏魏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了大莫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤烙丛,失蹤者是張志新(化名)和其女友劉穎羔味,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赋元,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年寒瓦,在試婚紗的時候發(fā)現(xiàn)自己被綠了坪仇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂很,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出少辣,到底是詐尸還是另有隱情,我是刑警寧澤漓帅,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站器予,受9級特大地震影響捐迫,放射性物質(zhì)發(fā)生泄漏乾翔。R本人自食惡果不足惜施戴,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雷则。 院中可真熱鬧懈玻,春花似錦巧婶、人聲如沸涂乌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罚勾。三九已至,卻和暖如春尖殃,著一層夾襖步出監(jiān)牢的瞬間划煮,已是汗流浹背送丰。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工弛秋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俐载,地道東北人登失。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像状婶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膛虫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 最近呢令杈?第一主要是加班比較嚴(yán)重,還被高中同桌嘲諷:屌絲程序員逗噩,還諷刺我頭發(fā)掉的快等等;第二呢 我最近和大學(xué)室友...
    KlivitamJ閱讀 430評論 0 1
  • JavaScript的代碼執(zhí)行環(huán)境是同步的异雁,也就是只能一步接一步的來執(zhí)行捶障。為了減少程序阻塞纲刀,提高程序運行效率,異步...
    西瓜魚仔閱讀 2,817評論 0 3
  • async 函數(shù) ES2017 標(biāo)準(zhǔn)引入了 async 函數(shù)锭部,使得異步操作變得更加方便。async 函數(shù)是什么拌禾?一...
    _羊羽_閱讀 2,096評論 0 1
  • 距離上一篇文章問世已經(jīng)悄然過去了幾個月展哭,這幾個月來。我自己有些懈怠匪傍,外加上失眠的一些癥狀搞的我精神差不多快崩潰了。...
    KlivitamJ閱讀 462評論 0 1
  • 響應(yīng)式編程&鏈?zhǔn)骄幊?公司的幾個共享項目, 有較多后臺定時的網(wǎng)絡(luò)請求,定位和藍(lán)牙操作的組合. 原方案是通過閉包嵌套...
    奧利奧_2aff閱讀 8,349評論 2 32