91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js如何獲取異步函數數據

發布時間:2023-02-24 10:50:27 來源:億速云 閱讀:76 作者:iii 欄目:開發技術

本篇內容介紹了“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如何獲取異步函數數據”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

宜黄县| 乌什县| 孟连| 牙克石市| 晋城| 堆龙德庆县| 新巴尔虎左旗| 吉安市| 宜丰县| 宣武区| 札达县| 乌兰察布市| 民乐县| 莆田市| 扶风县| 南涧| 满洲里市| 鹤壁市| 塔城市| 青阳县| 陆川县| 天水市| 淄博市| 溆浦县| 会同县| 孝昌县| 荔浦县| 巧家县| 临颍县| 大丰市| 永吉县| 湘西| 桑植县| 军事| 彭山县| 乐昌市| 宜兰县| 青岛市| 阿荣旗| 峡江县| 水富县|