久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

瀏覽:7日期: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
主站蜘蛛池模板: 日韩在线资源 | 91九色porny首页最多播放 | 日韩二三区 | 成人99| 一区综合| 国产欧美精品 | 国产午夜精品久久 | 欧美日韩精品一区二区 | 大象视频成人在线观看 | 成全视频免费观看在线看黑人 | 男人的天堂久久精品 | 日本一区二区三区四区 | 欧美视频区 | 国产精品日韩欧美一区二区三区 | 琪琪午夜伦伦电影福利片 | 国产日韩欧美精品一区二区 | 免费一区二区三区 | 国产成人网 | 国产日韩欧美一区二区在线观看 | 91九色视频在线 | 日韩在线视频精品 | 91精品国产综合久久婷婷香蕉 | 中文字幕av第一页 | 久久久精品影院 | 国产一区二区黑人欧美xxxx | 久久网页 | 久久久久久久影院 | 成人影院一区二区三区 | 国产单男 | 天天av网 | 日韩欧美在线视频观看 | 99精品欧美一区二区蜜桃免费 | 天堂欧美城网站 | 中文字幕第90页 | 午夜精品一区二区三区在线观看 | 欧美一级在线免费观看 | 国产精品视频一区二区三区, | 中文字幕国产一区 | 在线中文字幕日韩 | 久久精品国产99 | 韩国三级午夜理伦三级三 |