回调和返回值

时间:2014-08-10 00:03:22

标签: javascript asynchronous

我坚持使用两个外部库并一起使用它们。一个只有一个异步接口,另一个需要我从回调中返回一个值。

// this function is called as a callback from an external library
// it is required that the function returns a certain value
function onevent()
{
    // the callback for the "thirdparty.foo" function
    // with the result that must be returned from onevent
    function ondone(result) {
        // ???
    }
    // this is a call to a third party library that only has this asynchronous interface
    thirdparty.foo(ondone);
    // ??? return result;
}

JavaScript对我来说很新,我无法找到解决此问题的任何方法。

我希望能够在从ondone返回之前等待onevent的完成。与C ++相比,.wait可以是.getstd::future

1 个答案:

答案 0 :(得分:1)

  

一个只有一个异步接口,另一个需要我从回调中返回一个值。

这是一个问题如果你必须使用提供异步接口的那个来满足来自不接受回调的回调。如果你这样做,你根本无法一起使用它们。没有办法通过回调等待异步事件完成,从期望值返回的回调中进行回调。

E.g:

doSomethingExpectingReturnValueFromCallback(function() {
    // You cannot use an asynchronous API here to get the value you return
});

如果同步lib理解了promises(类似于std::future),那么你可以返回一个promise,但它听起来并不像它。