【问题标题】:Node.js exported function assign to variableNode.js 导出的函数分配给变量
【发布时间】:2018-07-25 13:17:29
【问题描述】:

我想将导出的函数保存到一个变量中以使用Promise.all。 但是当我将函数分配给变量时,它会运行。我想在分配功能时阻止运行。

示例代码

a.js

module.export = function say_hello(){ console.log('hello') }

b.js

var hello = require('./a.js');

var f1 = hello();

我的期望是不要运行 hello() 并分配给 f1。

我该怎么办?

【问题讨论】:

  • 我不明白你想要达到什么目的。为什么你不做 var f1 = require('./a.js')?或 var f1 = 你好
  • 只赋值不调用函数:var f1 = hello;
  • 在这个例子中,我没有写任何关于Promise的代码。实际上在 a.js 中 say_hello() 返回 Promise 我想将 say_hello() 函数推送到数组并运行 Promise.all()。这是我真正想做的。
  • 在实际代码中,我必须将 args 传递给 say_hello()。
  • Promise.all([hello(params),hello(differentParams)]).then(() => { ... })?

标签: javascript node.js promise


【解决方案1】:

a.js

module.exports = {
    hello: function say_hello() { console.log('hello'); }
}

b.js

var a = require ('./a.js')
a.say_hello();

【讨论】:

  • 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。
【解决方案2】:

Promise.all 需要一组 promise 参数作为输入,因此您必须先将函数更改为 Promise

module.export = function say_hello() {
    return new Promise(function (resolve, reject) {
        console.log('hello');
        // whatever
        resolve();
    });
}

那么当你需要的时候,你就会有一个承诺:

var hello = require('./a.js');
var f1 = hello();
Promise.all([f1,...])

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多