我正在查看一个样例nodejs服务器代码,它运行良好。但无法理解以下代码:
var handlers = {};
// Creating a sample handler
handlers.sample = function(data,callback){
callback(406,{'name':'sample handler'}); // How is this line of code working??
};
// Creating a not found handler
handlers.notFound = function(data,callback){
callback(404); // How is this line of code working??
};在整个代码中没有实现"callback“函数,那么如何实现
callback(406,{'name':'sample handler'});和
callback(404);都在工作吗?
请提个建议。谢谢。
发布于 2018-06-18 10:49:01
callback不是在您发布的代码中实现的;它是一个命名参数。
要调用需要callback的函数之一,需要将其作为参数传递,如下所示:
handlers.sample("some data", () => console.log("I'm in a callback!));第一个参数("some data")位于data参数中,第二个参数(() => console.log("I'm in a callback!))位于callback参数中。当运行callback(404)时,它将执行callback函数(在上面的示例中,它将执行console.log("I'm in a callback!))。
发布于 2018-06-18 11:00:01
基本上,当您调用handlers.sample时,您应该传递一个函数作为您的第二个参数,该函数将被调用,通常是异步的,并且可能是在对作为第一个参数传递的data执行了某些操作之后。例如,根据您提供的代码:
handlers.sample(dataObject, (number, object) => {
console.log(number)
console.log(object.name)
})将在控制台中产生以下结果:
406
sample handler我很好奇这是不是一个公共的库,你可以在其中看到这些代码,这样我们就可以仔细看看了?
发布于 2018-06-20 19:02:57
我对此做了进一步的调查,发现
selectedHandler在下面的代码中(问题中没有提到)是根据一些逻辑(这里不会提到)解析成handlers.sample或handlers.notFound变量名。
selectedHandler(data,function(status,payloadData){
// somelogic with the status and payloadData
});该函数的第二个参数本身就是一个完整的函数
function(status,payloadData){
// somelogic with the status and payloadData
} 作为handlers.sample或handlers.notFound中的第二个参数,这是一个回调。因此,在当前上下文中回调的执行就是该函数的执行(该函数是匿名的,因为它没有名称,并且作为回调执行)
https://stackoverflow.com/questions/50902088
复制相似问题