如何推迟执行功能?

时间:2018-07-05 22:08:58

标签: javascript asynchronous callback

说我有一个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()的回调中,但是我正在寻找替代方法。

1 个答案:

答案 0 :(得分:0)

似乎异步编程在javascript中无处不在,以至于您可以期望用户仅使用api1返回的Promise,或仅将api2用作{{ 1}}异步。

我很犹豫地发布此消息,因为它感觉很hacky,但也许会激发出一些有用的东西。您可以做api1api1共同承诺的事情。这迫使api2的主要功能变成了承诺中的api2。如果您需要对一对函数进行多个以上的独立调用,则此操作会很麻烦。

then()