javascript node.js next()

javascript node.js next(),javascript,node.js,next,Javascript,Node.js,Next,我在node.js中看到了很多用法next 它是什么,从哪里来的?它有什么作用?我可以在客户端使用它吗 抱歉,这里使用了以下示例: 查找loadUser函数。这似乎是Node.js控制流代码中的变量命名约定,其中对要执行的下一个函数的引用被提供给回调函数,以便它在完成时启动 例如,请参见此处的代码示例: 让我们看看您发布的示例: function loadUser(req, res, next) { if (req.session.user_id) { User.findBy

我在node.js中看到了很多用法
next

它是什么,从哪里来的?它有什么作用?我可以在客户端使用它吗

抱歉,这里使用了以下示例:


查找loadUser函数。

这似乎是Node.js控制流代码中的变量命名约定,其中对要执行的下一个函数的引用被提供给回调函数,以便它在完成时启动

例如,请参见此处的代码示例:

让我们看看您发布的示例:

function loadUser(req, res, next) {
  if (req.session.user_id) {
    User.findById(req.session.user_id, function(user) {
      if (user) {
        req.currentUser = user;
        return next();
      } else {
        res.redirect('/sessions/new');
      }
    });
  } else {
    res.redirect('/sessions/new');
  }
}

app.get('/documents.:format?', loadUser, function(req, res) {
  // ...
});
loadUser
函数在其第三个参数中需要一个函数,该参数绑定到名称
next
。这是一个正常的函数参数。它包含对要执行的下一个操作的引用,并在
loadUser
完成后调用(除非找不到用户)


在本例中,名称
next
没有什么特别之处;我们可以将它命名为任何名称。

这似乎是Node.js控制流代码中的变量命名约定,其中对要执行的下一个函数的引用被提供给回调函数,以便它在完成时启动

例如,请参见此处的代码示例:

让我们看看您发布的示例:

function loadUser(req, res, next) {
  if (req.session.user_id) {
    User.findById(req.session.user_id, function(user) {
      if (user) {
        req.currentUser = user;
        return next();
      } else {
        res.redirect('/sessions/new');
      }
    });
  } else {
    res.redirect('/sessions/new');
  }
}

app.get('/documents.:format?', loadUser, function(req, res) {
  // ...
});
loadUser
函数在其第三个参数中需要一个函数,该参数绑定到名称
next
。这是一个正常的函数参数。它包含对要执行的下一个操作的引用,并在
loadUser
完成后调用(除非找不到用户)


在本例中,名称
next
没有什么特别之处;我们可以将其命名为任何名称。

这是在需要连续执行操作的情况下传递回调时使用的命名约定,例如扫描目录->读取文件数据->处理数据。这优先于深度嵌套回调。Tim Caswell的博客上的以下文章的前三部分对此进行了很好的概述:

另请参见该公告第二部分的“顺序行动”部分:


这是在需要连续执行操作的情况下传递回调时使用的命名约定,例如扫描目录->读取文件数据->处理数据。这优先于深度嵌套回调。Tim Caswell的博客上的以下文章的前三部分对此进行了很好的概述:

另请参见该公告第二部分的“顺序行动”部分:


它基本上就像是一个回调,在执行并完成某部分代码后,express.js会使用它,你可以用它来确保部分代码已经完成,以及下一步要做什么,但要始终注意,你只能在每个REST块中执行一个
res.send

因此,您可以这样做,作为一个简单的
next()
示例:

app.get("/", (req, res, next) => {
  console.log("req:", req, "res:", res);
  res.send(["data": "whatever"]);
  next();
},(req, res) =>
  console.log("it's all done!");
);
当你想在你的应用程序中有一个中间件时,它也非常有用

要加载中间件函数,请调用app.use(),指定 中间件功能。例如,下面的代码加载 myLogger中间件在路由到根路径(/)之前运行


它基本上就像是一个回调函数,在执行并完成某部分代码后,express.js会使用它,您可以使用它来确保部分代码已经完成,以及下一步要做什么,但请始终注意,在每个REST块中,您只能执行一个
res.send

因此,您可以这样做,作为一个简单的
next()
示例:

app.get("/", (req, res, next) => {
  console.log("req:", req, "res:", res);
  res.send(["data": "whatever"]);
  next();
},(req, res) =>
  console.log("it's all done!");
);
当你想在你的应用程序中有一个中间件时,它也非常有用

要加载中间件函数,请调用app.use(),指定 中间件功能。例如,下面的代码加载 myLogger中间件在路由到根路径(/)之前运行



我在任何地方都没有看到过,文档中也没有引用过。你确定它没有在你正在查看的代码库中定义吗?这太模糊了。你能举一个上下文的例子吗?我在任何地方都没有看到过,文档中也没有引用过。你确定它没有在你正在查看的代码库中定义吗?这太模糊了。你能举一个上下文的例子吗?这在express.js中也被大量使用,但它不是
.next()
。他似乎在询问关于对象的
next
方法。最好使用
returnnext()
@RyanWalton I agree我使用了
return callback()
而不是
return next()
这在express.js中也被大量使用,但它不是
.next()
。他似乎在询问关于对象的
next
方法。最好使用
returnnext()
@RyanWalton I agree我使用了
return callback()
而不是
return next()
非常感谢这些链接。它解释了当开始使用nodejsLink现在不起作用时的很多事情。这是给内部服务器错误更新的链接从互联网档案谢谢你的链接,我开始使用节点几个月前,但我发现自己使用这些做法,但没有完全理解他们非常感谢这些链接。它解释了当开始使用nodejsLink现在不起作用时的很多事情。这是给内部服务器错误更新链接从互联网档案谢谢你的链接,我开始使用节点几个月前,但我发现自己使用这些做法,但没有完全理解他们