node.js - 使用 Node 模块的返回值作为变量?

标签 node.js

我目前正在尝试编写一个简单的小 Node 模块,以便更轻松地访问 API。我遇到的问题是我希望能够调用

var randomVar = myModule.function()

并将该函数的输出分配给变量。我相信它就像返回有问题的值一样简单,但是 randomVar 保持未定义状态,我显然在这里遗漏了一些东西。

这是我的 HTTP 请求,看起来相当标准:

exports.function = function(){

    var options = {
        // stuff
    };

    fetchResult = function(options,callback){
        var http = require('http');
        var str = '';

        http.get(options,function(res){

            res.on('data',function(chunk){
                str += chunk;
            });

            res.on('end',function(){
                callback(JSON.parse(str));
            });

        }).on('error', function(e){
            callback(e.message);
        });
    }

    fetchResult(options,function(data){
        console.log(data);
        // what do I do here?
    });
}

底部的 console.log 输出了我想要的数据,但是我到底该怎么做才能将其分配给模块外部的变量?

提前非常感谢您。

最佳答案

嗯,您尝试返回的函数是一个异步函数,因此您必须等待操作完成才能使用该变量。这就是回调发挥作用的地方!

在您的exports.function中添加一个名为callback的参数

exports.function = function (callback) {

callback 是将使用您的数据的函数!因此,从 fetchResult 运行:

callback(data);

现在您将调用并使用此函数:

myModule.function(function(data) {
    //console.log(data); //the data you want!
});

关于node.js - 使用 Node 模块的返回值作为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338657/

相关文章:

c++ - 为什么这会导致 nodejs 崩溃

node.js - 避免 node.js 中的 EPIPE 错误的最大查询长度

node.js - Heroku 配置 :push not adding environment variables

Node.js - 使用带有内部 CA 的 https.request()

javascript - 包版本更改时如何通知?

javascript - 服务器路径的流程

node.js - 无法使用Docker中设置的环境系统变量从 Node 连接到MongoDB服务器

node.js - Firestore 安全规则 : How to enforce the number of fields CREATED in a Firestore document thru security rules?

node.js - 在 ExpressJS/NodeJS 中移动文件

node.js - webpack 不再缩小包