var request = require('request');
request('http://www.google.com', function(error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
})
我很困惑我们是否可以通过说response.error
来重写,而我们的命名约定必须相同才能进行更改
此处的功能如何工作。如何知道将第一个参数作为错误传递,将第二个参数作为响应传递
答案 0 :(得分:2)
请求期望使用某个功能签名。在这种情况下,具有参数error
,response
和body
的函数。这些功能通常称为callback
功能。
请求完成后,request
库将调用您设计为其回调函数的函数。
基本上request
会强制您使用此函数签名,而您对此无能为力。
如今,图书馆使用promises
或使用async/await
更为普遍。这提供了一种更灵活的方式来对所调用函数的响应进行操作。
答案 1 :(得分:0)
request('http://www.google.com', function(error, response, body) {
})
将请求作为返回响应和正文的函数。
function(error,response,body){}
是回调。这意味着request()完成此操作的时间function(error,response,body){}
将要运行。
第一个参数总是错误是回调的语法。如果以后遇到回调,则会注意到每个回调都将第一个参数作为错误。这是运行函数时导致的错误,此处的函数是request()。如果在执行request()时没有发生错误,则it(error)可以为null 。
然后出现错误,响应和正文,这是request()函数的输出。
您可以更改并保留示例的名称
1 function(error,response,body){}
2 function(e,resp,rbody){}
3 function(response,error,body){}
4 function(response,body,error){}
这些不是导致错误的原因,都是相同的语句,而是访问
中的错误1 function(error,response,body){console.log(error)}
2 function(e,resp,rbody){console.log(e)}
3 function(response,error,body){console.log(response)}
4 function(response,error,body){console.log(response)}
我建议您阅读https://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm