Предположительно, ваш метод entry
выполняет что-то асинхронное, и что что-то должно иметь обратный вызов, который запускается после его завершения.Итак, просто добавьте обратный вызов к 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
обратного вызова были одинаковыми, то вы могли бы (как отметили Аарон Дюфур в комментариях) просто сказать:
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
.1026 *
Каждый раз, когда вам нужно подождать, пока что-нибудь произойдет в асинхронном (Java | Coffee) скрипте, вы почти всегда решаете проблему, добавляя обратный вызов.