分享web开发知识

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

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

JS-Promise(使异步操作同步执行)

发布时间:2023-09-06 01:57责任编辑:傅花花关键词:暂无标签

Promise - JavaScript | MDN
Promise - 廖雪峰的官方网站

使用Promise使异步操作同步执行非常方便,我在遇到了使不确定个数个异步操作同步执行时学习了很久这个Promise的使用(当时因为没有理解透彻也纠结了好久),并进行总结,希望可以帮到大家

单个异步操作同步

<div id="box"></div><script> ?var box = document.querySelector(‘#box‘) ?var p = new Promise(function(resolve, reject){ ???setTimeout(function(){ ?????box.innerHTML += ‘网络请求<br>‘; ?????resolve() ???}, 1000) ?}) ?p.then(function(resolve){ ???box.innerHTML += ‘结束<br><hr>‘; ?})</script>

确定个数异步操作同步

<div id="box"></div><script> ?var p = new Promise(function(resolve, reject){ ???setTimeout(function(){ ?????box.innerHTML += ‘建立连接<br>‘; ?????resolve(‘ok‘) ???}, 1000) ?}) ?function post_sth(data){ ???return new Promise(function(resolve, reject){ ?????setTimeout(function(){ ???????box.innerHTML += ‘post网络请求,此时data=‘+data+‘ <br>‘; ???????resolve(data+‘|post‘) ?????}, 1000) ???}) ?} ?function get_sth(data){ ???return new Promise(function(resolve, reject){ ?????setTimeout(function(){ ???????box.innerHTML += ‘get网络请求,此时data=‘+data+‘ <br>‘; ???????resolve(data+‘|get‘) ?????}, 1000) ???}) ?} ???p.then(post_sth).then(get_sth).then(post_sth).then(function(data){ ???box.innerHTML += ‘最后data=‘+data+‘<br><hr>‘; ?});</script>

不定个数异步操作同步

<div id="box"></div><script> ?var p = new Promise(function(resolve, reject){resolve()}) ?/** ???function ?????返回function(供本then用) ???????返回Promise(供下一个then用) ?*/ ?function get_request_sth_func(i){ ???return function request_sth(){ ?????return new Promise(function(resolve, reject){ ???????setTimeout(function(){ ?????????box.innerHTML += ‘请求‘+i+‘<br>‘; ?????????resolve() ???????}, Math.round(Math.random()*1000)) ?????}) ???} ?} ?for (var i = 0; i < 20; ++i) { ???p = p.then(get_request_sth_func(i)) ?} ?p.then(function(){ ???box.innerHTML += ‘完成<br><hr>‘; ?})</script>

JS-Promise(使异步操作同步执行)

原文地址:https://www.cnblogs.com/jffun-blog/p/9128196.html

知识推荐

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