Javascript AngularJS:如何包装同步函数以使其异步

Javascript AngularJS:如何包装同步函数以使其异步,javascript,angularjs,Javascript,Angularjs,我有一个同步函数(这是一个现有的工作代码,这意味着作者不希望我更改代码),现在在我正在处理的任务中,高级开发人员希望我等待这个同步函数返回回调,或者等待它在执行下一个代码之前先完成。有没有办法将现有的同步函数包装为异步函数 StateChangeService.doChangeState('form', {id: '123123112313'}) 这在代码本身内部 // They don't want to change this to an async function doChangeSt

我有一个同步函数(这是一个现有的工作代码,这意味着作者不希望我更改代码),现在在我正在处理的任务中,高级开发人员希望我等待这个同步函数返回回调,或者等待它在执行下一个代码之前先完成。有没有办法将现有的同步函数包装为异步函数

StateChangeService.doChangeState('form', {id: '123123112313'})
这在代码本身内部

// They don't want to change this to an async function
doChangeState: function (state, options) {
    changeToState(state, options);
}

他们不希望我更改StateChangeService上的任何内容,所以有没有办法将其包装为异步方法

当然,用一个承诺

asyncChangeState(state, options) {
  return Promise.resolve(doChangeState(state, options));
}
// To call it 
asyncChangeState(x, y).then(result => {...});

只有在函数完成后,
then
中的回调才会运行

当然,用一个承诺

asyncChangeState(state, options) {
  return Promise.resolve(doChangeState(state, options));
}
// To call it 
asyncChangeState(x, y).then(result => {...});

只有在函数完成后,
then
中的回调才会运行

异步回调是一种承诺,可以通过延迟对象从返回。如果必须等待函数结束,那么它不是异步的,而是同步的。那你到底想要什么?不是反过来的吗?“在执行下一个代码之前先等待它完成”这是一种同步行为,不需要为此封装异步函数。如果需要,只需在函数调用后执行回调函数callback@Kaddath可能他只是想有一个
。然后
同步方法。用一个承诺(或$q)把它包装起来就可以了。@AdityaParab也许,我已经不再做假设了,所以,一个措辞恰当的问题更容易解决。。promise不是asynchronous的同义词异步回调是一个promise,它可以通过延迟对象返回。如果必须等待函数结束,那么它不是异步的,而是同步的。那你到底想要什么?不是反过来的吗?“在执行下一个代码之前先等待它完成”这是一种同步行为,不需要为此封装异步函数。如果需要,只需在函数调用后执行回调函数callback@Kaddath可能他只是想有一个
。然后
同步方法。用一个承诺(或$q)把它包装起来就可以了。@AdityaParab也许,我已经不再做假设了,所以,一个措辞恰当的问题更容易解决。。promise不是asynchronous的同义词,顺便说一句,这是正确的。但是,在使用AngularJS时,我建议使用
$q.resolve
而不是
Promise.resolve
来维护角度上下文。是用于处理承诺的包装器,
Promise
是承诺的纯版本。对于这样简单的行为,我不建议使用
q
。为已经很简单的东西添加不必要的代码。谢谢大家。无论如何,这是一个非常有用的解决方案。我只想看看我们的前辈是否会用q或Promise来指代。这是正确的。但是,在使用AngularJS时,我建议使用
$q.resolve
而不是
Promise.resolve
来维护角度上下文。是用于处理承诺的包装器,
Promise
是承诺的纯版本。对于这样简单的行为,我不建议使用
q
。为已经很简单的东西添加不必要的代码。谢谢大家。无论如何,这是一个非常有用的解决方案。我会看看我们的前辈是否会用q或Promise来推荐。