Javascript 节点请求无法等待响应,即使使用回调也是如此
这是我正在测试的代码,它不会每次都返回响应。就像我运行它20次一样,只有一次我可以得到身体的输出。其他时候,我没有得到任何输出,甚至没有看到任何错误消息 我想这是因为请求运行得太快,无法得到响应 有人能帮我吗? 谢谢 我在函数中添加了输出(err、response、body),如下所示。但什么也没得到Javascript 节点请求无法等待响应,即使使用回调也是如此,javascript,node.js,callback,httprequest,Javascript,Node.js,Callback,Httprequest,这是我正在测试的代码,它不会每次都返回响应。就像我运行它20次一样,只有一次我可以得到身体的输出。其他时候,我没有得到任何输出,甚至没有看到任何错误消息 我想这是因为请求运行得太快,无法得到响应 有人能帮我吗? 谢谢 我在函数中添加了输出(err、response、body),如下所示。但什么也没得到 get_from_google : function (callback) { request('http://www.google.com', function(err, res, bo
get_from_google : function (callback) {
request('http://www.google.com', function(err, res, body) {
console.info('In the callback');
if (err)
return callback(err);
if (res.statusCode === 200) {
callback(new Error('Nothing got back'), body);
} else {
callback(new Error('Unexpected status code: ' + res.statusCode));
}
});
}
以下是控制台中的输出:
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://10.33.203.210:53537/wd/hub
Started
.
Ran 1 of 3 specs
1 spec, 0 failures
Finished in 0.019 seconds
Shutting down selenium standalone server.
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #01 passed
Process finished with exit code 0
这里有几个问题:
主体
事件处理程序是不必要的,因为您已经有了另一个回调(err,result[,…resultn])
的节点样式回调签名get_from_google: function(callback) {
request('http://www.google.com', function(err, res, body) {
if (err)
return callback(err);
if (res.statusCode === 200) {
callback(null, body);
} else {
callback(new Error('Unexpected status code: ' + res.statusCode));
}
});
}
嗯,嗯,您没有在else语句中调用回调(我不明白您为什么要监听
body
)。什么是请求?请求模块还是什么?是的,我正在使用npm请求模块。我在这里遇到的问题是没有得到任何回调。函数中的代码(错误、响应、正文)没有得到执行。您能确切地说明您是如何测试这个特定函数的吗?也许您不是在等待函数完成后才将测试标记为已完成?解决方案是使用promise.controlfolw.wait来等待承诺。我已经尝试过了,但仍然无法每次都得到响应。测试在0.019秒内完成。完成请求是否太快?因为我试图在函数中输出body(err、res、body)。然而,我没有得到任何输出。
get_from_google: function(callback) {
request('http://www.google.com', function(err, res, body) {
if (err)
return callback(err);
if (res.statusCode === 200) {
callback(null, body);
} else {
callback(new Error('Unexpected status code: ' + res.statusCode));
}
});
}