在函数中包装promise并在变量中声明它之间的区别

问题描述 投票:0回答:1

通常在研究promise时我会看到以下注释:你应该在函数中放置一个promise,这样就不会立即调用它。

所以我不应该使用它

var somePromise = new Promise(function(resolve, reject){...});

并且更好地使用它

var somePromise = function(){
    return new Promise(function(resolve, reject){...});
};

有人可以用实际的方式详细说明这个建议到底是什么意思吗?

javascript ecmascript-6 es6-promise
1个回答
3
投票

它没有多少:要么立即创建一个promise,要么创建一个函数,在调用它时将创建并返回一个promise:

Create a promise

var somePromise = new Promise(function(resolve, reject){...});

在这里,您已在当前上下文中创建了一个存储在somePromise变量中的promise。你现在可以使用这个承诺。

Create a function that returns a promise

var somePromise = function() {
    return new Promise(function(resolve, reject) {
        // ...
    });
}

在第二种情况下,somePromise不是承诺而是功能。您必须调用该函数并捕获其返回值(promise)以操纵promise。目前没有创建承诺。

以下是通过调用函数获得承诺的方法:

var myPromise = somePromise(); // myPromise contains the returned promise

在第二种情况下,您可能希望将参数传递给somePromise函数,使其更具通用性和可重用性。

© www.soinside.com 2019 - 2024. All rights reserved.