gpt4 book ai didi

javascript - Node.js:确保一段代码在另一段之后执行

转载 作者:搜寻专家 更新时间:2023-11-01 00:34:15 26 4
gpt4 key购买 nike

给定这段代码:

 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) ->

如何确保 db.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_callentry 回调的参数相同,那么您可以(如评论中的 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 到底是什么。

任何时候您需要等待异步 (Java|Coffee)Script 中发生的事情,您几乎总是通过添加回调来解决问题。

关于javascript - Node.js:确保一段代码在另一段之后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com