Node.js:确保一段代码一段接一段地执行
Node.js: Make sure a piece of code is executed after another
给定此代码:
c = new Customer
c.entry phone,req #how to make sure it ends before the next piece of code?
db.Entry.findOne {x: req.body.x}, (err,entry) ->
我如何确保数据库。Entry.findOne仅在c.Entry完成后执行?
class Customer
entry: (phone,req) ->
假设您的entry
方法执行异步操作,并且something应该有一个在完成时运行的回调。所以,只需在entry
:中添加一个回调
class Customer
entry: (phone, req, callback = ->) ->
some_async_call phone, req, (arg, ...) -> callback(other_arg, ...)
我不知道some_async_call
的回调的参数是什么,也不知道您想传递给entry
的回调的是什么,所以我使用arg, ...
和other_arg, ...
作为示例占位符。如果some_async_call
和entry
回调的参数相同,那么您可以(正如Aaron Dufour在评论中指出的那样)说:
entry: (phone, req, callback = ->) ->
some_async_call phone, req, callback
然后将db.Entry.findOne
调用移动到回调中:
c = new Customer
c.entry phone, req, ->
db.Entry.findOne {x: req.body.x}, (err, entry) ->
当然,entry
和回调参数中的细节将取决于entry
在做什么以及some_async_call
到底是什么
任何时候,当您需要在async(Java|Coffee)Script中等待某件事发生时,您几乎总是通过添加回调来解决问题。
相关文章:
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 将字符串作为一段 HTML/javascript 代码执行
- 在延迟一段时间后根据 if 条件执行函数
- 在页面首次加载时执行 jQuery 代码,然后在一段时间后加载
- Javascript :经过一段时间后执行操作
- 执行了一段时间的javascript/jquery函数,然后停止
- 在下载图像后或延迟一段时间后执行jQuery函数
- 是否可以在JavaScript的执行堆栈末尾放置一段代码
- 如果没有jQuery,javascript如何检查多个ajax调用是否已经完成,一旦完成,就执行一段代码
- 在浏览器向服务器发送任何操作URI的请求之前执行一段代码
- 在执行一段代码之前,必须加载两个ExtJS存储
- Node.js:确保一段代码一段接一段地执行
- 如何在浏览器中使用F12控制台在javascript中每隔一段时间执行一次
- 在方法执行之间等待一段时间
- 如何将ONCLICK替换为在一段时间内执行的自动操作
- 在一段时间内阻止函数下次执行
- 在页面加载一段时间后执行JS函数
- 这是可能的C执行一段js代码
- 如何在一段时间后执行一个函数
- 如何在一段时间后停止执行包含无限循环的Javascript函数