首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Promise.defer标准?

Promise.defer标准?
EN

Stack Overflow用户
提问于 2016-08-19 01:09:40
回答 1查看 402关注 0票数 3

我做的是承诺,我更喜欢像这样使用它:

代码语言:javascript
运行
复制
function Deferred() {
    this.resolve = null;
    this.reject = null;
    this.promise = new Promise(function(resolve, reject) {
        this.resolve = resolve;
        this.reject = reject;
    }.bind(this));
    Object.freeze(this);
}

function somethingAsync() {

    var deferred = new Deferred();

    // do stuff then deferred.resolve();

    return deferred.promise;
}

不过,我刚在火狐浏览器(FirefoxPromise.defer())中发现了同样的东西,这是标准吗?还是只针对火狐?我无法在Firefox Objects/Promise的承诺文档中找到它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 01:44:07

Promise.defer曾经是一个建议,但它决定不将它包含在规范中,而是包含使用the revealing constructor pattern的允诺构造函数。

它是在Firefox和Chrome中实现的,后来又从Chrome中删除。这不是一个标准,但曾经是一项建议。

承诺构造函数的使用在设计时被显式地支持为用例。

委员会之所以决定采用允诺构造函数,是因为它在默认情况下防止同步throw

代码语言:javascript
运行
复制
new Promise((resolve, reject) => {
    thisThrowsSynchronously();
}); 

如果允诺构造器没有这样做,您将不得不在每次承诺返回函数调用时都可能使用.catch} catch(e) {,这可能会令人沮丧。允诺构造函数建立一个不变量,其中.catch是充分的。

我还想指出,除了转换回调API之外,我一方面可以计算我使用了承诺构造函数的次数。通常,您的代码应该有接近零延迟或承诺构造函数的用法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档