说我有一个Javascript API,它包含两个函数,第一个在调用回调之前进行一些异步工作:
function api1(args, callback) {
some_async_op(function() {
callback()
})
}
function api2(arg) {
...
}
重要的是,只有在api1完成异步工作并调用其回调之后,才允许api2进行工作。但是碰巧的是,客户端对这些api的调用通常是同步的,即
api1(arg, function() { ... })
...
api2(arg)
如何实施api2()
,使其在api1()
完成之前不能运行?显然,api2()
调用可以放在传递给api1()
的回调中,但是我正在寻找替代方法。
答案 0 :(得分:0)
似乎异步编程在javascript中无处不在,以至于您可以期望用户仅使用api1
返回的Promise,或仅将api2
用作{{ 1}}异步。
我很犹豫地发布此消息,因为它感觉很hacky,但也许会激发出一些有用的东西。您可以做api1
和api1
共同承诺的事情。这迫使api2
的主要功能变成了承诺中的api2
。如果您需要对一对函数进行多个以上的独立调用,则此操作会很麻烦。
then()