亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript訪問Promise對象返回值的操作方法

 更新時間:2025年03月11日 08:55:40   作者:Linux運維技術棧  
這篇文章介紹了如何在JavaScript中使用Promise對象來處理異步操作,通過使用fetch()方法和Promise對象,我們可以從后端API獲取數(shù)據(jù)并處理返回值,文章展示了如何使用.then()鏈式操作和async/await語法來訪問Promise對象的返回值,感興趣的朋友一起看看吧

在Javascript中,什么是Promise

Promise是一個對象,表示一個異步操作的事件完成或失敗。

Promise對象可以是如下狀態(tài):

  • pending
  • fulfilled
  • rejected

最廣泛使用的異步操作的一個實例是Fetch API。fetch() 方法返回一個Promise對象。

如果我們從后端API獲取一些數(shù)據(jù)。對于這篇博文,我將使用JSONPlaceholder – 一個偽造的REST API。我們將獲取一個id=1的用戶數(shù)據(jù)。

fetch("https://jsonplaceholder.typicode.com/users/1")

讓我們看看如何訪問返回數(shù)據(jù)。

1- then() 鏈式操作

它是最簡單和最明顯的方式。

fetch("https://jsonplaceholder.typicode.com/users/1") // 1
  .then((response)=>response.json())  //2
  .then((user) => {
    console.log(user.address); // 3
  });

這里,我們(1)從API獲取數(shù)據(jù),(2)轉換為JSON對象,然后(3)打印用戶地址值到控制臺。

結果如下:

{
  street: 'Kulas Light',
  suite: 'Apt. 556',
  city: 'Gwenborough',
  zipcode: '92998-3874',
  geo: { lat: '-37.3159', lng: '81.1496' }
}

2- 在之后的代碼中使用返回值

但是如果我們想要在之后的代碼中使用返回值,怎么辦?

如果我們嘗試像這樣做(錯誤方式!)

const address = fetch("https://jsonplaceholder.typicode.com/users/1")
  .then((response)=>response.json())
  .then((user) => {
    return user.address;
  });
console.log(address);

我們將得到

Promise { <pending> }

得到這種結果,是因為Javascript代碼總是同步執(zhí)行,所以console.log()函數(shù)在fetch()請求后立即開始,而沒有等待直到它解析完成。當console.log()函數(shù)開始運行的時刻,fetch()請求函數(shù)返回的Promise對象處于pending狀態(tài)。

那就是說,我們可以訪問另一個 .then() 回調函數(shù)的Promise對象的返回值:

const address = fetch("https://jsonplaceholder.typicode.com/users/1")
  .then((response) => response.json())
  .then((user) => {
    return user.address;
  });
const printAddress = () => {
  address.then((a) => {
    console.log(a);
  });
};
printAddress();

或使用async/await語法:

const address = fetch("https://jsonplaceholder.typicode.com/users/1")
  .then((response) => response.json())
  .then((user) => {
    return user.address;
  });
const printAddress = async () => {
  const a = await address;
  console.log(a);
};
printAddress();

以這兩種方式,我們將得到:

{
  street: 'Kulas Light',
  suite: 'Apt. 556',
  city: 'Gwenborough',
  zipcode: '92998-3874',
  geo: { lat: '-37.3159', lng: '81.1496' }
}

結論

Promise對象廣泛用于Javascript異步編程。而且開發(fā)者對于如何正確使用它,有時還有些困惑。在這篇博客文章里,我已經(jīng)試圖描述一個用戶例子,即當開發(fā)者需要在之后的代碼中使用來自Promise對象的返回值的實例。 

英文原文鏈接:https://dev.to/ramonak/javascript-how-to-access-the-return-value-of-a-promise-object-1bck

更多中文參考資料

[1] JavaScript Promise - Javascript教程. https://www.runoob.com/js/js-promise.html

[2] JavaScript Promise 對象 – 編程技術. https://www.runoob.com/w3cnote/javascript-promise-object.html

[3] 7.6 Promise – 7. 瀏覽器 – JAVASCRIPT教程- 廖雪峰的官方網(wǎng)站. https://liaoxuefeng.com/books/javascript/browser/promise/index.html

到此這篇關于Javascript如何訪問Promise對象返回值的文章就介紹到這了,更多相關js訪問Promise對象返回值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一道超經(jīng)典js面試題Foo.getName()的故事

    一道超經(jīng)典js面試題Foo.getName()的故事

    Foo.getName算是一道比較老的面試題了,大致百度了一下在17年就有相關文章在介紹它,下面這篇文章主要給大家介紹了關于一道超經(jīng)典js面試題Foo.getName()的相關資料,需要的朋友可以參考下
    2022-03-03
  • avalon js實現(xiàn)仿微博拖動圖片排序

    avalon js實現(xiàn)仿微博拖動圖片排序

    玩微博的朋友都上傳過圖像吧,當圖片上傳后用戶是可以隨意拖動圖片的,調整圖片的順序,那么此功能是怎么實現(xiàn)的,下面小編通過此篇文章給大家詳解基于avalon js實現(xiàn)仿微博拖動圖片排序,需要的朋友可以參考下
    2015-08-08
  • bootstrap制作jsp頁面(根據(jù)值讓table顯示選中)

    bootstrap制作jsp頁面(根據(jù)值讓table顯示選中)

    這篇文章主要為大家詳細介紹了bootstrap做的jsp頁面,根據(jù)值讓table顯示選中,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 基于Html+CSS+JS實現(xiàn)手動放煙花效果

    基于Html+CSS+JS實現(xiàn)手動放煙花效果

    這篇文章主要介紹了利用Html+CSS+JavaScript實現(xiàn)的放煙花效果,文中一共實現(xiàn)了兩種方式:手動和自動,文中的示例代碼講解詳細,感興趣的可以試一試
    2022-01-01
  • Ajax驗證用戶名或昵稱是否已被注冊

    Ajax驗證用戶名或昵稱是否已被注冊

    本文主要介紹了Ajax驗證用戶名或昵稱是否已被注冊的實例方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 微信js-sdk界面操作接口用法示例

    微信js-sdk界面操作接口用法示例

    這篇文章主要介紹了微信js-sdk界面操作接口用法,結合實例形式分析了微信界面操作的相關接口功能與使用技巧,需要的朋友可以參考下
    2016-10-10
  • 基于javascript canvas實現(xiàn)五子棋游戲

    基于javascript canvas實現(xiàn)五子棋游戲

    這篇文章主要介紹了基于javascript canvas實現(xiàn)的五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JavaScript?新提案optional?chaining可選鏈屬性原理詳解

    JavaScript?新提案optional?chaining可選鏈屬性原理詳解

    這篇文章主要為大家介紹了JavaScript?新提案optional?chaining可選鏈屬性原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • JavaScript ES6 Class類實現(xiàn)原理詳解

    JavaScript ES6 Class類實現(xiàn)原理詳解

    這篇文章主要介紹了JavaScript ES6 Class類實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • JS、jQuery中select的用法詳解

    JS、jQuery中select的用法詳解

    這篇文章主要介紹了JS、jQuery中select的用法詳解的相關資料,需要的朋友可以參考下
    2016-04-04

最新評論