分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

js异步任务处理方式2

发布时间:2023-09-06 02:04责任编辑:苏小强关键词:js

一、es6之前:使用原始的callback函数,会陷入回掉地域

二、es6:

  1. Promise 

// 点击确定按钮时,获取面值列表 ???????????getFaceResult () { ???????????????this.getLocation(this.phoneNum) ???????????????????.then(res => { ???????????????????????if (res.status === 200 && res.data.success) { ???????????????????????????let province = res.data.obj.province; ???????????????????????????let city = res.data.obj.city; ???????????????????????????this.getFaceList(province, city) ???????????????????????????????.then(res => { ???????????????????????????????????if(res.status === 200 && res.data.success) { ???????????????????????????????????????this.faceList = res.data.obj ???????????????????????????????????} ???????????????????????????????}) ???????????????????????} ???????????????????}) ???????????????????.catch(err => { ???????????????????????console.log(err) ???????????????????}) ???????????}

Promise 的方式虽然解决了 callback hell,但是这种方式充满了 Promise的 then() 方法,如果处理流程复杂的话,整段代码将充满 then。语义化不明显,代码流程不能很好的表示执行流程。

  2. Generator 

function* G() { ???const a = yield 100 ???console.log(‘a‘, a) ?// a aaa ???const b = yield 200 ???console.log(‘b‘, b) ?// b bbb ???const c = yield 300 ???console.log(‘c‘, c) ?// c ccc}const g = G()g.next() ???// value: 100, done: falseg.next(‘aaa‘) // value: 200, done: falseg.next(‘bbb‘) // value: 300, done: falseg.next(‘ccc‘) // value: undefined, done: true

Generator 的方式解决了 Promise 的一些问题,流程更加直观、语义化。但是 Generator 的问题在于,函数的执行需要依靠执行器,每次都需要通过 g.next() 的方式去执行。

三、es7

 1. async/await 

async function testResult() { ???let first = await doubleAfter2seconds(30); ???let second = await doubleAfter2seconds(50); ???let third = await doubleAfter2seconds(30); ???console.log(first + second + third);}

async 函数完美的解决了上面两种方式的问题。流程清晰,直观、语义明显。操作异步流程就如同操作同步流程。同时 async 函数自带执行器,执行的时候无需手动加载。

参考链接:https://segmentfault.com/a/1190000010244279

js异步任务处理方式2

原文地址:https://www.cnblogs.com/zhangruiqi/p/9305301.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved