Promise控制异步流程怎么实现
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"Promise控制异步流程怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目
千家信息网最后更新 2025年01月24日Promise控制异步流程怎么实现
本篇内容介绍了"Promise控制异步流程怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
题目:页面上有一个输入框,两个按钮,A按钮和B按钮,点击A或者B分别会发送一个异步请求,请求完成后,结果会显示在输入框中。
题目要求,用户随机点击A和B多次,要求输入框显示结果时,按照用户点击的顺序显示,举例:
用户点击了一次A,然后点击一次B,又点击一次A,输入框显示结果的顺序为先显示A异步请求结果,再次显示B的请求结果,最后再次显示A的请求结果。
UI界面如图:
这个需求该如何用promise来实现呢?代码如下:
//dom元素
var a = document.querySelector("#a")
var b = document.querySelector("#b")
var i = document.querySelector("#ipt");
//全局变量p保存promie实例
var P = Promise.resolve();
a.onclick = function(){
//将事件过程包装成一个promise并通过then链连接到
//全局的Promise实例上,并更新全局变量,这样其他点击
//就可以拿到最新的Promies执行链
P = P.then(function(){
//then链里面的函数返回一个新的promise实例
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve()
i.value = "a";
},1000)
})
})
}
b.onclick = function(){
P = P.then(function(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve()
console.log("b")
i.value = "b"
},2000)
})
})
}
我们用定时器来模拟异步请求,仔细于阅读代码我们发现,在全局我们定义了一个全局P,P保存了一个promise的实例。
然后再观察点击事件的代码,用户每次点击按钮时,我们在事件中访问全局Promise实例,将异步操作包装到成新的Promise实例,然后通过全局Promise实例的then方法来连接这些行为。
连接的时候需要注意,then链的函数中必须将新的promise实例进行返回,不然就会执行顺序就不正确了。
需要注意的是,then链连接完成后,我们需要更新全局的P变量,只有这样,其它点击事件才能得到最新的Promise的执行链。
这样每次用户点击按钮就不需要关心回调执行时机了,因为promise的then链会按照其连接顺序依次执行。
这样就能保证用户的点击顺序和promise的执行顺序一致了。
"Promise控制异步流程怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
全局
实例
用户
结果
顺序
按钮
事件
输入
代码
变量
流程
控制
内容
再次
函数
更多
知识
过程
题目
包装
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
搭建服务器的步骤
关于网络安全的提案
数据库同时查询2张表的列
软件开发岗待遇
江苏省网络安全技能大赛冠军
服务器cpu性能排行表
服务器电子厂辐射大吗
软件开发4用哪个系统好
2008sql数据库绿色版
北京培训软件开发机构
sql mini数据库恢复
5g网络技术的现状与发展
企业网络安全解决方案设计
软件开发合同备案需要什么手续
sap系统 数据库
内网服务器怎么控制多台电脑
江西熊猫网络技术有限公司智联招聘
网络安全 招采文件
智游网络技术学院
牵牛工作台服务器没反回数据
网络安全知识五十字
一念逍遥新开的全部服务器
java遍历数据库的值
软件开发cpu主频
给我找一个国家网络安全的手抄报
学习网络安全的目的是什么
肇庆无限软件开发价格走势
计算机网络安全用什么软件
软件开发广告语怎么写
恩施市网络技术