Node.js 都是关于回调的。除非 API 调用是同步的(罕见且不应该这样做),否则您永远不会从这些调用中返回值,而是使用回调方法中的结果进行回调,或者调用 express 方法 res.send
request.js 是一个很好的调用 Web 请求的库
让我们以调用 google 的非常简单的示例为例。使用 res.send,您的 express.js 代码可能如下所示:
var request = require('request');
app.get('/callGoogle', function(req, res){
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
// from within the callback, write data to response, essentially returning it.
res.send(body);
}
})
});
或者,您可以将回调传递给调用 Web 请求的方法,并从该方法中调用该回调:
app.get('/callGoogle', function(req, res){
invokeAndProcessGoogleResponse(function(err, result){
if(err){
res.send(500, { error: 'something blew up' });
} else {
res.send(result);
}
});
});
var invokeAndProcessGoogleResponse = function(callback){
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
status = "succeeded";
callback(null, {status : status});
} else {
callback(error);
}
})
}