Node.js NodeJS模块无法从闭包内部返回数据
我正在尝试使用以下代码创建一个调用API的模块:Node.js NodeJS模块无法从闭包内部返回数据,node.js,Node.js,我正在尝试使用以下代码创建一个调用API的模块: var key = require('./keys').slack; var unirest = require('unirest'); module.exports.apiCall = function() { var args = {"token": key, "channel": "C07RLKT6C", "text": "DebugmessagePlsIgnore", "as_user": true}; var req
var key = require('./keys').slack;
var unirest = require('unirest');
module.exports.apiCall = function() {
var args = {"token": key, "channel": "C07RLKT6C", "text": "DebugmessagePlsIgnore", "as_user": true};
var req = unirest.post("https://slack.com/api/chat.postMessage");
req.query(args).end(function(res) {
// Output res
});
}
console.log(this.apiCall());
不幸的是,我无法输出res的结果以返回。我正在使用Unirest模块请求HTTPS数据
谢谢。您需要一个回调来管理它
var key = require('./keys').slack;
var unirest = require('unirest');
module.exports.apiCall = function(cb) {
var args = {"token": key, "channel": "C07RLKT6C", "text": "DebugmessagePlsIgnore", "as_user": true};
var req = unirest.post("https://slack.com/api/chat.postMessage");
req.query(args).end(function(res) {
cb(null, res)
});
}
this.apiCall(function(err, res) {
console.log(res)
});
你需要回电话
//module.js
var key = require('./keys').slack;
var unirest = require('unirest');
module.exports.apiCall = function(callback) {
var args = {"token": key, "channel": "C07RLKT6C", "text": "DebugmessagePlsIgnore", "as_user": true};
var req = unirest.post("https://slack.com/api/chat.postMessage");
req.query(args).end(callback);
}
// another file
var apiCall = require('./module');
apiCall(function(res) {
console.log(res);
});
你不能那样做@SLaks抱歉,但我不理解链接。因此,在这种情况下,所有使用此函数的函数都必须使用回调?还有其他选择吗?你可以使用回调、承诺等。我更喜欢承诺,你可以在网上找到一些教程。我会查一下承诺。嗨,谢谢你的帮助,但是因为Devalian之前已经回答过了,我会选择他的答案作为被接受的答案,但我会投票给你的。好的。我想他可能错了。你不想在模块外使用该功能吗?我已经在模块外尝试过了,他的功能似乎正常,但我必须删除该功能。从根本上说。