栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Promise构造函数需要执行程序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Promise构造函数需要执行程序?

这称为Domenic创造的揭示构造器模式。

基本上,这个想法是让您访问尚未完全构造的对象的 各个部分 。报价Domenic:

我之所以称其为揭示性构造函数模式,是因为Promise构造函数正在揭示其内部功能,但仅揭示了构造有问题的promise的代码。解决或拒绝诺言的能力只会显示给构建代码,而至关重要的是不会透露给使用诺言的任何人。因此,如果我们将p交给另一个消费者,说

过去

最初,promise与延迟对象一起使用,在源自Javascript的Promise的Twistedpromises中是正确的。在较旧的实现中(例如Angular

$q
,Q,jQuery和bluebird的旧版本),这仍然是正确的(但通常已弃用)。

API类似于:

var d = Deferred();d.resolve(); d.reject();d.promise; // the actual promise

它有效,但是有问题。Deferreds和Promise构造函数通常用于将非Promise API转换为Promise。Javascript中存在一个称为“Zalgo”的“著名”问题-基本上,这意味着API必须是同步或异步的,但绝不能同时存在。

事情是-递延可以执行类似的操作:

function request(param) {   var d = Deferred();   var options = JSON.parse(param);   d.ajax(function(err, value) {       if(err) d.reject(err);      else d.resolve(value);   });}

这里有一个隐藏的细微错误-如果

param
不是有效的JSON,则此函数 同步 引发,这意味着我必须将每个promise返回函数都包装在a
} catch (e) {
和a中,
.catch(e =>
以捕获所有错误。

promise构造函数捕获此类异常并将其转换为拒绝,这意味着您不必担心同步异常与带有Promise的异步异常。(它通过始终

then
在“下一个刻度”中执行回调来从另一方面保护您)。

此外,它还需要每个开发人员都必须了解一种额外的类型,以了解promise构造函数不擅长的地方。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号