最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js fetch異步請求使用實例詳解

 更新時間:2021年11月02日 11:04:30   作者:在下月亮有何貴干  
fetch是一種HTTP數(shù)據(jù)請求的方式,是XMLHttpRequest的一種替代方案,fetch不是ajax的進(jìn)一步封裝,而是原生js,下面這篇文章主要給大家介紹了關(guān)于js fetch異步請求使用的相關(guān)資料,需要的朋友可以參考下

認(rèn)識異步

首先我們得明白請求是一個異步的過程。

因為請求需要時間向服務(wù)器發(fā)送請求和接收請求結(jié)果。

我們得要等待請求完成然后執(zhí)行請求完成后的回調(diào),來對接收到的請求結(jié)果做處理。

fetch(url)

為了方便學(xué)習(xí),我們借用一下uni-app教程的api接口。

  const url = 'https://unidemo.dcloud.net.cn/api/news'

我們需要知道fetch是基于Promise設(shè)計的,如果不了解推薦先學(xué)習(xí)一下es6的Promise。

fetch(url)可以直接發(fā)送get請求,而且本身是個Promise。

既然是Promise,那么就可以.then回調(diào),我們試試。

  fetch(url).then(res => {
    console.log(res)
  })

它返回的是什么呢?是一個response。

response是它封裝好的一個對象,里面返回了請求的一些參數(shù)。

比較有用的例如status,告訴你請求的狀態(tài)碼是200,說明發(fā)送請求成功了。

然后我們既然發(fā)送了get請求,我們最關(guān)心的肯定是請求到的數(shù)據(jù)在哪里呢?

response.json()

別急,點開Response的Prototype原型,會發(fā)現(xiàn)有一個json方法。

直接告訴你這個方法也返回一個Promise。

那我們就可以將這個promise繼續(xù)返回進(jìn)行下一步回調(diào)。

在下一步里輸出一下結(jié)果看看是什么東西。

  fetch(url).then(response => {
    return response.json()
  }).then(res => {
    console.log(res)
  })

原來我們要得到的數(shù)據(jù)在這里。

結(jié)合async和await

上面雖然我們已經(jīng)可以使用fetch來執(zhí)行回調(diào)來進(jìn)行請求了,但是使用回調(diào)還是顯得代碼不夠優(yōu)雅。

不過如果你知道與異步相關(guān)的關(guān)鍵字async與其中的await,就有可以替代的編寫方式了。

給函數(shù)添加async之后函數(shù)就會變成異步函數(shù),其中可以使用await使代碼對異步操作Promise進(jìn)行等待,把回調(diào)結(jié)果返回,有一絲把異步變同步的意味。

  const fetchAPI = async () => {
    const response = await fetch(url)
    const data = await response.json()
    console.log(data)
  }

  fetchAPI()

異常處理

而且我們可以在第一步response中的狀態(tài)碼來判斷能否正常進(jìn)行下一步。

  const fetchAPI = async () => {
    const response = await fetch(url)
    if(response.status===200){
		const data = await response.json()
		console.log(data)
    }else{
		console.log('請求異常')
	}
  }

  fetchAPI()

然后為了更嚴(yán)謹(jǐn)?shù)目紤]一些意外狀況,再套上異常捕獲try-catch。

  const fetchAPI = async () => {
    try {
      const response = await fetch(url)
      if (response.status === 200) {
        const data = await response.json()
        console.log(data)
      } else {
        console.log('請求異常')
      }
    } catch (err) {
      console.log(err)
    }
  }

  fetchAPI()

post請求

fetch的第二個入?yún)⑹莻€對象,就是請求的配置參數(shù)。

請求方法可以設(shè)置post,還可以設(shè)置請求頭還有post的入?yún)ⅰ?/p>

  fetch(url, {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      ...
    },
    body: JSON.stringify({
      'key': value,
      ...
    })
  })

總結(jié)

到此這篇關(guān)于js fetch異步請求使用的文章就介紹到這了,更多相關(guān)js fetch異步請求使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析微信小程序modal彈窗關(guān)閉默認(rèn)會執(zhí)行cancel問題

    淺析微信小程序modal彈窗關(guān)閉默認(rèn)會執(zhí)行cancel問題

    這篇文章主要介紹了小程序modal彈窗關(guān)閉默認(rèn)會執(zhí)行cancel方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • JavaScript的兼容性與調(diào)試技巧

    JavaScript的兼容性與調(diào)試技巧

    可能在大家使用JavaScript效果時,會碰到在各個瀏覽器中頁面的顯示效果不同,甚至報錯,這就是代碼的兼容性問題。本文就是主要介紹JavaScript的兼容性與調(diào)試技巧,希望對大家有所幫助
    2016-11-11
  • JavaScript+canvas實現(xiàn)框內(nèi)跳動小球

    JavaScript+canvas實現(xiàn)框內(nèi)跳動小球

    這篇文章主要為大家詳細(xì)介紹了JavaScript+canvas實現(xiàn)框內(nèi)跳動小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • JavaScript數(shù)組之展開運算符詳解

    JavaScript數(shù)組之展開運算符詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組之展開運算符的相關(guān)資料,你可以通過展開操作符(Spread operator)擴展一個數(shù)組對象和字符串,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • javascript實現(xiàn)動態(tài)時鐘的啟動和停止

    javascript實現(xiàn)動態(tài)時鐘的啟動和停止

    這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)動態(tài)時鐘的啟動和停止文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 提交按鈕的name=''submit''引起的js失效問題及原因

    提交按鈕的name=''submit''引起的js失效問題及原因

    這篇文章主要介紹了提交按鈕的name='submit'引起的js失效問題及原因,需要的朋友可以參考下
    2015-02-02
  • JS多個異步請求 按順序執(zhí)行next實現(xiàn)解析

    JS多個異步請求 按順序執(zhí)行next實現(xiàn)解析

    這篇文章主要介紹了js多個異步請求 按順序執(zhí)行next實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 使用webpack構(gòu)建應(yīng)用的方法步驟

    使用webpack構(gòu)建應(yīng)用的方法步驟

    這篇文章主要介紹了使用webpack構(gòu)建應(yīng)用的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文詳解JavaScript中內(nèi)建對象

    一文詳解JavaScript中內(nèi)建對象

    這篇文章主要為大家詳細(xì)介紹了JavaScript中內(nèi)建對象的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • ES6 迭代器與可迭代對象的實現(xiàn)

    ES6 迭代器與可迭代對象的實現(xiàn)

    這篇文章主要介紹了ES6 迭代器與可迭代對象的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論

桂东县| 沂源县| 丹东市| 青神县| 建昌县| 聂荣县| 朝阳县| 潞城市| 泾源县| 和平区| 龙井市| 页游| 明水县| 商城县| 河源市| 拉孜县| 盐边县| 乐平市| 喀喇沁旗| 凤台县| 定南县| 永善县| 红原县| 南昌市| 长顺县| 肥城市| 喀什市| 宜黄县| 万宁市| 灵武市| 广水市| 杂多县| 和林格尔县| 黄龙县| 新田县| 石渠县| 道孚县| 大关县| 若尔盖县| 新源县| 嘉兴市|