问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

javascript库有哪些支持promise规范

发布网友 发布时间:2022-03-26 11:19

我来回答

2个回答

热心网友 时间:2022-03-26 12:48

许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures。JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口。 本文讲的是基于Promises/A 标准的JavaScript promises。[http://wiki.commonjs.org/wiki/Promises/A]
Promise的用例:
执行规则
多个远程验证
超时处理
远程数据请求
动画
将事件逻辑从应用逻辑中解耦
消除回调函数的恐怖三角
控制并行的异步操作
JavaScript promise是一个承诺将在未来返回值的对象。是具有良好定义的行为的数据对象。promise有三种可能的状态:
Pending(待定)
Rejected(拒绝)
Resolved(已完成)

一个已经拒绝或者完成的承诺属于已经解决的。一个承诺只能从待定状态变成已经解决的状态。之后,承诺的状态就不变了。承诺可以在它对应的处理完成之后很久还存在。也就是说,我们可以多次取得处理结果。我们通过调用promise.then()来取得结果,这个函数一直到承诺对应的处理结束才会返回。我们可以灵活的串联起一堆承诺。这些串联起来的“then”函数应该返回一个新的承诺或者最早的那个承诺。
通过这个样式,我们可以像写同步代码一样来写非同步代码。主要是通过组合承诺来实现:
堆栈式任务:多处散落在代码中的,对应同一个承诺。
并行任务:多个承诺返回同一个承诺。
串行任务:一个承诺,然后接着执行另一个承诺。
上面几种的组合。
为什么要这么麻烦?只用基本的回调函数不行吗?
回调函数的问题
回调函数适合简单的重复性事件,例如根据点击来让一个表单有效,或者保存一个REST调用的结果。回调函数还会使代码形成一个链,一个回调函数调用一个REST函数,并为REST函数设置一个新的回调函数,这个新的回调函数再调用另一个REST函数,依此类推。代码的横向增长大于纵向的增长。回调函数看起来很简单,直到我们需要一个结果,而且是立刻就要,马上就用在下一行的计算中。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

'use strict';
var i = 0;
function log(data) {console.log('%d %s', ++i, data); };

function validate() {
log("Wait for it ...");
// Sequence of four Long-running async activities
setTimeout(function () {
log('result first');
setTimeout(function () {
log('result second');
setTimeout(function () {
log('result third');
setTimeout(function () {
log('result fourth')
}, 1000);
}, 1000);
}, 1000);
}, 1000);

};
validate();

我使用timeout来模拟异步操作。管理异常的方法是痛苦的,很容易玩漏下*为。当我们编写回调,那么代码组织变得混乱。图2显示了一个模拟验证流可以运行在NodeJS REPL。在下一节,我们将从pyramid-of-doom模式迁移到一个连续的promise。

热心网友 时间:2022-03-26 14:06

许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures。JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口。 本文讲的是基于Promises/A 标准的JavaScript promises
Promise的用例:
执行规则
多个远程验证
超时处理
远程数据请求
动画
将事件逻辑从应用逻辑中解耦
消除回调函数的恐怖三角
控制并行的异步操作
JavaScript promise是一个承诺将在未来返回值的对象。是具有良好定义的行为的数据对象。promise有三种可能的状态:
Pending(待定)
Rejected(拒绝)
Resolved(已完成)

一个已经拒绝或者完成的承诺属于已经解决的。一个承诺只能从待定状态变成已经解决的状态。之后,承诺的状态就不变了。承诺可以在它对应的处理完成之后很久还存在。也就是说,我们可以多次取得处理结果。我们通过调用promise.then()来取得结果,这个函数一直到承诺对应的处理结束才会返回。我们可以灵活的串联起一堆承诺。这些串联起来的“then”函数应该返回一个新的承诺或者最早的那个承诺。
通过这个样式,我们可以像写同步代码一样来写非同步代码。主要是通过组合承诺来实现:
堆栈式任务:多处散落在代码中的,对应同一个承诺。
并行任务:多个承诺返回同一个承诺。
串行任务:一个承诺,然后接着执行另一个承诺。
上面几种的组合。
为什么要这么麻烦?只用基本的回调函数不行吗?
回调函数的问题
回调函数适合简单的重复性事件,例如根据点击来让一个表单有效,或者保存一个REST调用的结果。回调函数还会使代码形成一个链,一个回调函数调用一个REST函数,并为REST函数设置一个新的回调函数,这个新的回调函数再调用另一个REST函数,依此类推。代码的横向增长大于纵向的增长。回调函数看起来很简单,直到我们需要一个结果,而且是立刻就要,马上就用在下一行的计算中。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
探探直播间的入口在v4.1.9.3版本中具体位置是哪里? ...一个微信号,但是也没有绑定手机号码跟QQ邮箱,怎么才能找回来... ...号是以前的手机号码,微信登不上怎么找回微信密码?_百度问一问 ...一条黑花,红色大蟒蛇把我手腕咬一口没出血? 求轻松赚一元的软件,多推荐几个,好的话有奖励 凉粉做的太稀怎么补救(煮好的凉粉可以冰箱冷藏多少天) bilibili会员怎么升级快? 小米cc9支持无线充电吗? 为什么狗突然乱叫乱跑钻角落 如何用烤鸭箱烤鸭子 国内有哪些靠谱的 Javascript 库 CDN可用 JS的常用开发框架有哪些 有哪些优秀的前端js框架 javascript,什么是js库? javascript框架有哪些 能推荐几个功能丰富的交互式Javascript库吗? 请问javascript库包含了哪些东西,开发它有什么意义? 有哪些值得推荐的绘制3D的js库 js类库有哪些 ipad网速突然变慢了 ipad3网速很慢!什么问题? 为什么ipad连wifi网速很慢 ipad air2上网慢该怎么办 ipad网速慢怎么办 ipad mini 2链接 WiFi,上网速度很慢是怎么回事 ipad的网速慢怎么办 iPad网速非常慢,甚至上不了,怎么回事?有办法解决吗? ipad连wifi网速慢是怎么回事呀? 为什么ipad上网网速特别慢 新买的ipad pro 网速好慢? js框架、js库、js类包 这三个到底是什么关系 ?什么概念? 有哪些用 JavaScript 实现的图形库 QML中能使用什么JS库 JS有哪些框架 js里边都有哪些框架? JS有哪些框架? 现在前端有哪些js框架可以学习的啊? js框架、js库、js类包 这三个到底是什么关系 什么概念 JS有哪些爬虫库? 零钱通怎么隐藏金额 华为荣耀怎么单独隐藏零钱通这个功能? 征信不好微信零钱通会找不到吗 从零钱通转钱怎样不被发现 小米浏览器下载视频在哪 小米浏览器视频缓存文件在哪? 小米浏览器视频缓存文件在哪? 小米手机用小米浏览器下载的视频在哪可以找到 小米浏览器离线视频导出怎么操作? 小米手机浏览器下载的文件在哪个文件夹? 小米手机自带的浏览器缓存视频文件在哪?
  • 焦点

最新推荐

猜你喜欢

热门推荐