javascript - 将 Promise 包装在函数中与在变量中声明它之间的区别

标签 javascript ecmascript-6 es6-promise

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

所以我不应该使用这个

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

更好地使用它

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

有人可以用实际的方式详细说明这个建议的确切含义吗?

最佳答案

没有太多内容:要么立即创建一个 Promise,要么创建一个在调用时创建并返回 Promise 的函数:

创建 promise

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

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

创建一个返回 Promise 的函数

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

在第二种情况下,somePromise 不是一个 Promise,而是一个函数。您必须调用该函数并捕获其返回值( promise )才能操作 promise 。此时不会创建任何 promise 。

以下是如何通过调用函数获得 promise :

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

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

关于javascript - 将 Promise 包装在函数中与在变量中声明它之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48049586/

相关文章:

javascript - 在 Openlayers3 中的图层上拖动、调整图像大小和旋转图像

javascript - ES6 : Is it dangerous to delete elements from Set/Map during Set/Map iteration?

javascript - 在 JavaScript 中使用赋值进行选择性对象解构?

Javascript 等待 Promises 返回数据,然后分配 onClick 事件监听器以对返回的数据执行操作

javascript - 提前解决/拒绝后我需要返回吗?

node.js - 接收 Promise <Pending> 而不是值

javascript - 单击时一一显示 div 的子级

javascript - 将并行数组组合成单个对象数组并排序

javascript - 如何使用 react 中的删除按钮从列表中删除项目?

Javascript/ lambda : How to make the following code functional