【发布时间】:2013-05-03 05:42:27
【问题描述】:
这里是新的节点程序员,由于节点的异步性质,我很难理解如何从函数返回 http 请求的内容。这是我的程序的精简版。
//#1
function getwebsite(url) {
var body;
http.get(url, function (res) {
res.on('data', function (chunk) {
body += chunk;
//***Right here, I need 'body' returned out of this function***
});
});
}
//#2
var a = getwebsite('website1.com');
var b = getwebsite('website2.com');
//#3
console.log(a+b);
我想要做的就是 1:创建一个从站点获取数据的函数(如果重要的话,它的 JSON 和 XML),2:能够从我程序中的任何位置调用该函数,3:是能够操纵从我的函数返回的任何数据。
你应该放置(和调用)回调函数的方式让我很头疼。我研究了几十个 http.get 和一般回调示例的示例,但还没有找到一个像我的示例中那样合并的示例。经过几天的失败尝试,我觉得如果有人可以在我的示例中展示如何做到这一点,它可能最终会在我的大脑中点击(手指交叉)。
【问题讨论】:
-
你想要一个 Deferred(Promise 也是 Deferred),以及
.then()或.when()。 Node.js 应该有文档(我不是 Node 开发人员,但这是 Javascript 中的常见模式)。编辑:You might try this tutorial. -
感谢您的建议。我对教程(包括您链接的教程)的理解是,Promise 已从 Node.js 中删除。我不知道为什么,因为它看起来非常有用。然而,我觉得在这一点上,我应该强迫自己理解回调(这是 Node 异步性质的重要组成部分),然后再深入研究插件。
-
你没听懂在说什么;从 Node.js 中删除了实现因为它没有很好地实现,而不是因为 Node.js 不会“支持”延迟。可操作的术语留给用户空间练习意味着它不会是 Node.js 原生产品,但提供其功能的库仍然可行且有用。
标签: javascript asynchronous callback