Скажем, у меня есть Javascript API, который состоит из двух функций, первая из которых выполняет некоторую асинхронную работу перед вызовом обратного вызова:
function api1(args, callback) {
some_async_op(function() {
callback()
})
}
function api2(arg) {
...
}
Важно, чтобы api2 разрешалось выполнять свою работу только после того, как api1 завершил асинхронную работу и вызвал ее обратный вызов. Однако случается так, что клиентские вызовы к этим apis, как правило, синхронны, то есть
api1(arg, function() { ... })
...
api2(arg)
Как можно реализовать api2()
, чтобы он не мог работать, пока не завершится api1()
? Очевидно, что вызов api2()
может быть помещен в обратный вызов, переданный api1()
, но я ищу альтернативу.