我正在审查一个示例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(406,{'name':'sample handler'});
和
callback(404);
正在运作?
请建议。感谢。
答案 0 :(得分:0)
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!)
)。
答案 1 :(得分:0)
基本上,当你调用handlers.sample
时,你应该传递一个函数作为你的第二个参数,并且该函数将被调用,通常是异步的,并且可能是在你传递的data
之后完成的。第一个论点。例如,根据您提供的代码:
handlers.sample(dataObject, (number, object) => {
console.log(number)
console.log(object.name)
})
会在控制台中产生此结果:
406
sample handler
我很好奇,如果这是一个公共图书馆,你看到这段代码,我们可以仔细看看吗?
答案 2 :(得分:0)
我对此进行了进一步的挖掘,发现了
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
中的第二个参数,即回调。因此,在当前上下文中执行Callback就是执行此函数(此函数是匿名的,因为它没有名称,并且将作为Callback执行)