我是loopback的新手,我正在尝试学习使用远程钩子。我读过我需要提供三个参数的文档。 context
和unused
变量以及next
参数。
我经常看到在远程钩子next()
的末尾被调用。
有人可以向我解释一下这个参数在loopback中的用途是什么?
答案 0 :(得分:4)
所有关于node.js的异步性质。
next
的目的是告诉Loopback您已完成钩子中所需的所有操作,并且可以进行处理。
由于您可能需要在钩子中执行异步操作,因此需要Loopback等待您完成它,然后调用next()
并且Loopback知道您已完成。
最重要的是,如果您没有致电next()
,您的应用会挂起,导致408超时。
例如,如果您需要向另一台服务器发出请求:
SomeModel.beforeSave = function(next, modelInstance) {
// if you call next() here it would be called immediately and the result of request
// would not be asign to modelInstance.someProperty
request('http://api.server.com', function (error, response, body) {
// do something with result of the request and call next
modelInstance.someProperty = body;
// now when you updated modelInstance call next();
next();
})
// same here if you call next() here it would be called immediately and the result of request
// would not be asign to modelInstance.someProperty
};