色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

js獲取異步函數數據的實現

瀏覽:23日期:2022-06-01 18:20:45
目錄
  • 異步函數
  • 1. 回調函數
  • promise
  • Generator函數
  • async/await函數
  • 回調函數
  • promise
  • async await

異步函數是js中經常會用到的,它的作用無非就是進行一些異步的操作(處理數據)。那么,常見的異步函數有哪些呢,我們一般又是如何獲取異步函數的數據呢?今天這篇文章就是圍繞這個問題去寫的。

異步函數

一般正常情況下,js中的函數是一個一個地按照順序來完成的。但是異步函數可以改變執行順序。不過異步任務必須在同步任務執行結束之后,從任務隊列中依次取出執行。

常見的異步函數一共有四類:

  • 回調函數
  • promise函數
  • Generator函數
  • async/await函數

1. 回調函數

回調函數一般是作為某個函數的入參,然后在函數內部執行這個回調函數。常見的回調函數有ajax,setTimeouut定時器類,dom事件回調等。

testA(cb) {
cb();
}
setTimeout(() => {
console.log("這是一個回調函數")
}, 100)

缺點: 不能try catch捕獲錯誤, 不能直接return。

promise

promise函數是一種特殊的異步函數,里面包含三種狀態:pending、fulfilled(resolved)、rejected。pending是promise的初始狀態,resolved表示執行完成且成功的狀態,rejected表示執行完成且失敗的狀態。三個狀態不可逆轉

Promise本身是同步,then的內容是異步:

let promiseFunc = new Promise((resolve, reject) => {
  // 執行同步代碼
  resolve();
}).then((res) => {
  console.log(res)
},(err) => {
  console.log(err);
})

Generator函數

Generator 是一個可以暫停執行(分段執行)的函數,函數名前面要加星號,是一個狀態機,封裝了多個內部狀態。

function *myTest() {
  yield "I",
  yield "am",
  yield "queen"
}

async/await函數

async修飾符加在函數前面,返回一個promise,可以使用then添加回調函數。 await后跟著一個promise或者一個原始類型的值(會自動轉成立即 resolved 的 Promise 對象),等待resolve的結果。任何一個await后的Promise發生reject,整個aysnc都會中斷,需要try{}catch(err){}來捕獲錯誤。

async function myTest() {
  let val = await new Promise((resolve) => {
    resolve(1)
  });
}

如何獲取異步函數的數據

獲取異步函數的數據一般分為三種:回調函數,promise和async和await

回調函數

回調函數的這種很簡單,就是直接將數據傳進回調函數里作為入參即可。

function getData(cb) {
  let val = "a";
  cb(val);
}

getData((data) => {
  console.log(data);   // "a"
})

promise

使用promise來處理異步,主要就是利用resolve成功的回調函數,reject失敗的回調函數。

let promiseFunc = new Promise((resolve, reject) => {
  let n = Math.random();
  if (n >= 0.7) {
    resolve(n);
  } else {
    reject(`${n}小于0.7`)
  }
});
promiseFunc.then((data) => {
  console.log(data);   // 0.3小于0.7
})

async await

async: 把函數變成異步函數。wait是等待異步函數執行完成。其中await一定要寫在async里面

async function myTest() {
  return "我是測試數據"
};
async function getData() {
  let val = await myTest();
  console.log(val);   // 我是測試數據
}

到此這篇關于js獲取異步函數數據的實現的文章就介紹到這了,更多相關js獲取異步函數 內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
主站蜘蛛池模板: 欧美日韩高清观看一区二区 | 欧美一级看片 | 亚洲欧美在线观看 | 日本在线加勒比 | 毛片在线看网站 | 免费看一区二区三区 | 久久久久在线观看 | 国产三级久久久精品三级 | a级片一级片 | 牲欧美| 男女上下爽无遮挡午夜免费视频 | 欧美手机看片 | 一区二区三区亚洲视频 | 国产精品揄拍一区二区久久 | 国产亚洲精品国产第一 | 成人永久免费视频网站在线观看 | 久久精品国产亚洲综合色 | 日本高清福利视频在线观看 | 久久tv免费国产高清 | 国产欧美在线观看不卡 | 国产一区二区三区在线免费观看 | 在线观看免费黄色网址 | 亚洲人成亚洲人成在线观看 | 欧美日韩亚洲高清不卡一区二区三区 | pgone太大了兽王免费视频 | 国产男女 爽爽爽爽视频 | 在线观看欧洲成人免费视频 | 日韩免费专区 | 欧美视频区 | 亚洲欧洲小视频 | 美女做爰视频在线观看免费 | 99国产成人高清在线视频 | 亚洲成年人专区 | 男女视频在线观看 | 在线播放另类 | 欧美综合在线观看 | 亚洲三级在线视频 | 亚欧美图片自偷自拍另类 | 国产精品白浆流出视频 | 色视频网站大全免费 | 久久毛片网 |