我对node.js全新,我找不到与我的问题类似的问题。我相信你们其中一个人很容易解决......至少我猜是这样。
我正在尝试使用node.js的npm mediawiki模块获取wikipage的特殊段落!我使用预定义函数得到段落如下:
bot.page(title).complete(function (title, text, date) {
//extract section '== Check ==' from wikipage&clean string
var result = S(text).between('== Check ==', '==').s;
});
多数工作。我想要的是:在其他函数中使用该代码块之外的“结果”。我认为它与回调有关,但我不知道如何处理它,因为这是mediawiki模块的预定义函数。
模块获取wikipage的示例函数如下所示:
/**
* Request the content of page by title
* @param title the title of the page
* @param isPriority (optional) should the request be added to the top of the request queue (defualt: false)
*/
Bot.prototype.page = function (title, isPriority) {
return _page.call(this, { titles: title }, isPriority);
};
使用模块的以下功能:
function _page(query, isPriority) {
var promise = new Promise();
query.action = "query";
query.prop = "revisions";
query.rvprop = "timestamp|content";
this.get(query, isPriority).complete(function (data) {
var pages = Object.getOwnPropertyNames(data.query.pages);
var _this = this;
pages.forEach(function (id) {
var page = data.query.pages[id];
promise._onComplete.call(_this, page.title, page.revisions[0]["*"], new Date(page.revisions[0].timestamp));
});
}).error(function (err) {
promise._onError.call(this, err);
});
return promise;
}
还有一个完整的回调函数,我不知道如何使用它:
/**
* Sets the complete callback
* @param callback a Function to call on complete
*/
Promise.prototype.complete = function(callback){
this._onComplete = callback;
return this;
};
如何通过在模块功能之外使用回调来访问“result”变量?我不知道如何处理回调,因为它是模块的预定义函数...
答案 0 :(得分:0)
我想要的是:使用"结果"在其他函数中的代码块之外。
你不能。您需要在该代码块中使用结果(该代码块称为callback
函数btw。)。您仍然可以将它们传递给其他函数,您只需要在该回调函数中执行它:
bot.page(title).complete(function (title, text, date) {
//extract section '== Check ==' from wikipage&clean string
var result = S(text).between('== Check ==', '==').s;
other_function(result); // <------------- this is how you use it
});