Javascript 理解node.js回调
我使用urllib向网页发出请求,并尝试返回其标题,如下所示:Javascript 理解node.js回调,javascript,node.js,Javascript,Node.js,我使用urllib向网页发出请求,并尝试返回其标题,如下所示: var getHeaders = function(webpage){ var info = urllib.request(webpage, {}, function(err, data, res){ // console.log(res.headers); works fine and shows them return res.headers; // I thought it should
var getHeaders = function(webpage){
var info = urllib.request(webpage, {}, function(err, data, res){
// console.log(res.headers); works fine and shows them
return res.headers; // I thought it should make the info variable have the headers information
});
return info;
}
现在,当我尝试获取网页的标题时,例如,可能
set cookie
,我希望它从网站返回标题,但是它没有,那么有没有方法返回标题,或者是不可能这样做呢?在节点中,几乎所有事情都是异步完成的,所以您只需要将函数设置为异步
var getHeaders = function (webpage, done) {
urllib.request(webpage, {}, function(err, data, res){
done(err, res.headers);
});
}
传统的模式是使用返回错误的回调作为第一个参数(或者在一切顺利的情况下使用错误值),以及之后需要返回的任何内容
然后,使用该方法与使用urllib
方法非常相似
getHeaders(webpage, function (err, headers) {
if (err) {
throw err; // or, you know, deal with it.
}
console.log(headers);
});
在节点中,几乎所有操作都是异步完成的,所以您只需要将函数设置为异步
var getHeaders = function (webpage, done) {
urllib.request(webpage, {}, function(err, data, res){
done(err, res.headers);
});
}
传统的模式是使用返回错误的回调作为第一个参数(或者在一切顺利的情况下使用错误值),以及之后需要返回的任何内容
然后,使用该方法与使用urllib
方法非常相似
getHeaders(webpage, function (err, headers) {
if (err) {
throw err; // or, you know, deal with it.
}
console.log(headers);
});
这是不可能做到的。它是异步的,所以你也需要使你的工作流程异步…任何事情都是可能的,只要添加一个while循环来阻止服务器,直到异步调用完成为止。@adeneo你有一颗黑心,你有。@Pointy-有时,我没有把它作为答案发布,或者说这是一个好主意,但我看到过人们实际使用while循环的代码,因为他们不知道如何使用异步方法。这是不可能的。它是异步的,所以你需要使你的工作流也异步…任何事情都是可能的,只需添加一个while循环来阻止服务器,直到异步调用完成。@adeneo你有一个黑心,你有。@Pointy-有时,我没有把它作为一个答案发布,或者说这是一个好主意,但我看到一些代码,人们实际上使用while循环,因为他们不知道如何使用异步方法。哦,我明白了,但是在一个函数中可以做到吗?我只是好奇我应该如何在node中做事情,因为我对依赖于异步代码的同步代码不熟悉。只能在不依赖异步代码的函数中返回值。在异步世界中,使用回调代码>返回未定义,我认为这是他们的任何方式,我可以分配res.headers到一个可返回的值?哦,我明白了,但这可能在一个函数中完成吗?我只是好奇我应该如何在node中做事情,因为我对依赖于异步代码的同步代码不熟悉。只能在不依赖异步代码的函数中返回值。在异步世界中,使用回调代码>我认为返回未定义的是哪一个?我可以用什么方法将res.headers分配给一个可返回的值?