当前位置:网站首页>ES6解决异步问题
ES6解决异步问题
2022-07-22 20:02:00 【郭郭郭憨憨】
ES6解决异步问题用的是promise,promise中有三个参数,分别是resolve、reject和finally,当函数执行成功的时候执行resolve,失败执行reject,到最后都会执行finally
先介绍一下resolve。要执行resolve执行。就要使用(.then),它代表的就是resolve的函数,
(.catch)代表的就是reject,使用setTimeOut函数的原因就是因为要模拟后端传输的数据,flag也是为了模拟求情成功或者失败,如果你要是想一直使用(.XXX)那就必须保证函数return的是一个promise,只有promise函数才有then、catch和finally
function fn(){
return new Promise((resolve) => {
setTimeout(function(){
if(flag){
resolve();
}else{
reject();
}
},1000)
})
}
fn().then(){
console.log("123")
return fn()
}
.catch(){
console.log("456")
return fn()
}
。finally(){
console.log("789")
}先举一个promise的实例,这个实例就是让每张图片隔一秒后输出
let div = document.querySelector("div")
function delayImg(item,src){
return new Promise((resolve) => {
setTimeout(function(){
let img = document.createElement("img");
img.src = src;
item.append(img);
resolve();
},1000)
})
}
delayImg(div,'https://s1.ax1x.com/2022/07/20/jbJGtg.jpg')
.then(function(){
return delayImg(div,'https://s1.ax1x.com/2022/07/20/jbJtpj.jpg')
})
.then(function(){
return delayImg(div,'https://s1.ax1x.com/2022/07/20/jbJJhQ.jpg')
})然后再做个小练习琢磨一些输出的优先级问题
function cook() {
console.log('开始做饭。');
var p = new Promise(function(resolve, reject){
setTimeout(function() {
console.log('做饭完毕!');
resolve('鸡蛋炒饭');
}, 1000);
});
return p;
}
function eat(data) {
console.log('开始吃饭:' + data);
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('吃饭完毕!');
resolve('一块碗和一双筷子');
}, 2000);
});
return p;
}
function wash(data) {
console.log('开始洗碗:' + data);
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('洗碗完毕!');
resolve('干净的碗筷');
}, 2000);
});
思考一下如何才能让他在控制台按顺序输出,如图

这个练习可以让你思考promise中优先级的问题,加深自己对promise的理解
答案:
cook()
.then(function(sentence){
return eat(sentence)
})
.then(function(sentence1){
return wash(sentence1)
}).then(function(sentence2){
console.log(sentence2)
})边栏推荐
- 局域网SDN技术硬核内幕 - 前传 CPU里面有什么?
- LUR caching algorithm
- 苹果开发者账号怎么免费注册申请以便第一时间享受升级体验
- W25q128fv translation (II)
- Kotlin学习快速入门(8)—— 委托
- 为什么我的百度账号登不上去了?百度账号无法登录现象的解决方法介绍
- session、cookie、token 详解
- 小黑leetcode之旅:590. N 叉树的后序遍历
- What key should I press to release the computer from sleep mode when the computer is standby
- 小米活期宝和余额宝哪个好?小米活期宝与阿里余额宝区别详细对比介绍
猜你喜欢

谷歌云和甲骨文云“热崩了”?部署跨云容灾势在必行!

奇瑞艾瑞泽8产品力超能打,“全优”可不是白叫的

编写一个具有搜索提示的搜索框

AWS使用EC2降低DeepRacer的训练成本DeepRacer-for-cloud的实践操作

Kotlin学习快速入门(8)—— 委托

Analyse de la stratégie de lecture et d'écriture du cache

小程序wx.setStorageSync后,在用getStorageSync获取数据有时会获取不到

【随笔】再见IE浏览器,一个时代的印记从此消失

小黑leetcode之旅:590. N 叉树的后序遍历

Flink data source disassembly and analysis (Wikipedia editssource)
随机推荐
Computer CMD reset network settings CMD command to reset the network
局域网SDN技术硬核内幕 - 14 三 从物到人——SDN走进园区网络
Zhimeng dedecms forgot to manage the background password retrieval method
postman “status“: 500, “error“: “Internal Server Error“, “message“: “The request was rejecte“
动作活体检测能力,构建安全可靠的支付级“刷脸”体验
上采样方式(反卷积、插值、反池化)
dns是什么意思 dns作用是什么介绍
LUR caching algorithm
How to get administrator permissions on the computer tutorial on setting administrator permissions on the computer
软件卸载不掉 显示请等待当前程序完成卸载或更改的解决办法
微软我们有多像上传不了照片怎么回事?TwinsOrNot照片传不上去的解决方法
OWA动态密码短信认证方案,解决outlook邮件双因子认证问题
电脑时间经常不准怎么办?设置自动更新校对电脑时间的教程
What key should I press to release the computer from sleep mode when the computer is standby
session、cookie、token 详解
如何把网站添加为可信任 可信任站点设置教程
[FAQ] common reasons and solutions for the failure of in app payment services to pull up the payment page
Interface Fiddler introduction and installation
电脑不能截屏怎么办?电脑的快捷截屏键无法使用的解决办法
删除文件时需要system权限怎么办 你需要来自system的权限才能删除的解决办法