国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:43日期: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
主站蜘蛛池模板: 97国产成人精品视频 | 三级黄色免费网站 | 亚洲无限看 | 日韩黄色在线 | 成年人在线视频网站 | 久久一级视频 | 久久精品国产99久久99久久久 | 国产成人a大片大片在线播放 | 国产免费久久精品99re丫y | 国产精品久久成人影院 | 日韩欧美国产一区二区三区 | 欧美日韩亚洲一区二区三区在线观看 | 一级毛片美国一级j毛片不卡 | 大桥未久在线精品视频在线 | 一区二区在线欧美日韩中文 | 18视频免费网址在线观看 | 国产亚洲人成a在线v网站 | 蘑菇午夜三级 | 欧美激情欧美狂野欧美精品免费 | 亚洲大片免费 | 亚洲高清国产拍精品影院 | 国产精选在线播放 | 美女在线看永久免费网址 | 欧美成年 | 欧美成成人免费 | 成人黄色免费网址 | 久草视频在线看 | 国产在线观看精品香蕉v区 国产在线观看免费人成小说 | 手机看片日韩日韩 | 黄色w站| 亚洲视频在线一区 | 亚洲www在线 | 免费观看日本视频 | 亚洲欧美日韩精品高清 | 中文字幕日韩精品有码视频 | 国产成人亚洲综合无 | 亚洲欧美男人天堂 | 国产91精品一区二区 | 成人a区| 美女一级毛片免费观看 | 国产男女交性视频播放免费bd |