首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs回调:如何定义回调?

Nodejs回调:如何定义回调?
EN

Stack Overflow用户
提问于 2018-06-18 10:39:56
回答 3查看 52关注 0票数 0

我正在查看一个样例nodejs服务器代码,它运行良好。但无法理解以下代码:

代码语言:javascript
复制
   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“函数,那么如何实现

代码语言:javascript
复制
       callback(406,{'name':'sample handler'});

代码语言:javascript
复制
       callback(404);

都在工作吗?

请提个建议。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2018-06-18 10:49:01

callback不是在您发布的代码中实现的;它是一个命名参数。

要调用需要callback的函数之一,需要将其作为参数传递,如下所示:

代码语言:javascript
复制
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!))。

票数 0
EN

Stack Overflow用户

发布于 2018-06-18 11:00:01

基本上,当您调用handlers.sample时,您应该传递一个函数作为您的第二个参数,该函数将被调用,通常是异步的,并且可能是在对作为第一个参数传递的data执行了某些操作之后。例如,根据您提供的代码:

代码语言:javascript
复制
handlers.sample(dataObject, (number, object) => {
  console.log(number)
  console.log(object.name)
})

将在控制台中产生以下结果:

代码语言:javascript
复制
406
sample handler

我很好奇这是不是一个公共的库,你可以在其中看到这些代码,这样我们就可以仔细看看了?

票数 0
EN

Stack Overflow用户

发布于 2018-06-20 19:02:57

我对此做了进一步的调查,发现

代码语言:javascript
复制
selectedHandler

在下面的代码中(问题中没有提到)是根据一些逻辑(这里不会提到)解析成handlers.samplehandlers.notFound变量名。

代码语言:javascript
复制
  selectedHandler(data,function(status,payloadData){

    // somelogic with the status and payloadData

  });

该函数的第二个参数本身就是一个完整的函数

代码语言:javascript
复制
function(status,payloadData){

        // somelogic with the status and payloadData

      } 

作为handlers.samplehandlers.notFound中的第二个参数,这是一个回调。因此,在当前上下文中回调的执行就是该函数的执行(该函数是匿名的,因为它没有名称,并且作为回调执行)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50902088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档