电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:25日期: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
主站蜘蛛池模板: 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 卧涛科技有限公司科技项目申报公司|高新技术企业申报|专利申请 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 酒万铺-酒水招商-酒水代理| 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 西门子代理商_西门子变频器总代理-翰粤百科 | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 泰国试管婴儿_泰国第三代试管婴儿_泰国试管婴儿费用/多少钱_孕泰来 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 |