Promise能使用来做什么,简单的实例是怎样的
Admin 2022-09-14 群英技术资讯 370 次浏览
“生产代码”是可能需要一些时间来执行的代码。
“消费代码”是必须等待结果的代码。
Promise 是一个 JavaScript 对象,它链接生产代码和消费代码。
看一段最简单的代码:
let myPromise = new Promise(function(myResolve, myReject) { // "Producing Code" (May take some time) myResolve(); // when successful myReject(); // when error }); // "Consuming Code" (Must wait for a fulfilled Promise) myPromise.then( function(value) { /* code if successful */ }, function(error) { /* code if some error */ } );
执行 new Promise 的构造函数后,会立即进入 Promise 的构造函数体内,即包含了 resolve 和 reject 方法的匿名函数。
然后执行完毕。此时并不会执行 then 里的回调函数。
然后 then 指定的回调函数被异步
调用,注意 Chrome 里的提示:
pending
(工作)状态时,结果是未定义的。fulfilled
时,结果是一个值。如下图所示:rejected
时,结果是一个错误对象。开发人员无法访问 Promise 属性状态和结果,必须使用 Promise 方法来处理 Promise。
看一个包含 UI 的例子:
Promise 把异步代码封装起来。上图的 setTimeout,模拟了一个耗时 3 秒的 HTTP 操作。
返回的 myPromise 对象,使用 then 注册回调函数。回调函数不关心自己什么时候被调用。
运行显示:
3 秒后:
一个文件访问的例子:
let myPromise = new Promise(function(myResolve, myReject) { let req = new XMLHttpRequest(); req.open('GET', "mycar.htm"); req.onload = function() { if (req.status == 200) { myResolve(req.response); } else { myReject("File not Found"); } }; req.send(); }); myPromise.then( function(value) {myDisplayer(value);}, function(error) {myDisplayer(error);} );
函数体内一般是一个比较费时的操作,操作本身会立即执行,但什么时候执行结束?这就是一个异步操作了。执行结束后,通过 resolve 通知 then 注册的回调函数。
关于“Promise能使用来做什么,简单的实例是怎样的”的内容今天就到这,感谢各位的阅读,大家可以动手实际看看,对大家加深理解更有帮助哦。如果想了解更多相关内容的文章,关注我们,群英网络小编每天都会为大家更新不同的知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍vue中循环取对象数组里的值的方法,对大家学习怎么取对象数组的值有一定的参考价值,需要的朋友可了解看看,下面我们就来了解看看具体的实现代码。
这篇文章主要介绍了vue router 配置路由的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
javascript数组中的map方法和filter方法,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
利用nodejs实现:逐行读写(从一个文件逐行复制到另外一个文件);逐行读取、处理和写入(读取一行,处理后,写入另一个文件)1.所需要的模块:fs,os,readline2.具体实现:a.功能的实现:readWriteFileByLine.jsvarfs=require('fs-extra');varos=require('os');varrl=requir
怎样使用js实现碰撞检测?碰撞效果在很多游戏中都会使用到,下面给大家分享一个js实现碰撞的简单测试。当小物体碰撞大物体,大物体颜色改变,效果如下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008