在研究承诺时,我经常看到以下注释:您应该在函数中放置一个 promise,这样就不会立即调用它。
所以我不应该使用这个
var somePromise = new Promise(function(resolve, reject){...});
并更好地使用它
var somePromise = function(){
return new Promise(function(resolve, reject){...});
};
有人可以以实际的方式详细说明这个建议的确切含义吗?
它没有太多内容:要么立即创建一个承诺,要么创建一个函数,该函数将在调用承诺时创建并返回承诺:
创建承诺
var somePromise = new Promise(function(resolve, reject){...});
在这里,您在当前上下文中创建了一个承诺,该承诺存储在somePromise
变量中。您现在可以使用该承诺。
创建一个返回承诺的函数
var somePromise = function() {
return new Promise(function(resolve, reject) {
// ...
});
}
在第二种情况下,somePromise
不是一个承诺,而是一个函数。您必须调用该函数并捕获其返回值(承诺(以操纵承诺。目前没有创造任何承诺。
以下是通过调用函数获得承诺的方式:
var myPromise = somePromise(); // myPromise contains the returned promise
在第二种情况下,您可能希望将参数传递给somePromise
函数,使其更加通用和可重用。