我的JS设置如下。

App1.js

function x(){
  thirdPartyLibrary.performAsyncTask((resultObject, errorObject) => {
    // This is a callback function, invoked when performAsyncTask is done.
    // I can handle resultObject and errorObject here.
  });
}


假设我还有其他文件作为此应用程序的一部分。它们每个都调用x(),并根据对x()的调用结果调用它们自己的handleSuccess()或handleError()函数的版本。

如何构造对x()的调用,以实现此目的?几乎就像我想从App1.js中“监听” performAsyncTask()的结果一样,但是我不确定该怎么做。

最佳答案

如果您需要保留回调(由于非常老的JS客户端或其他原因),则可以将回调作为参数提供给x

function x(myCallback) {
  thirdPartyLibrary.performAsyncTask(myCallback);
}

// other file:
x((resultObject, errorObject) => {
  // handle just like before
});


您甚至可以根据结果将其更改为两个回调。最后只会调用您的一个回调:

function x(successCallback, errorCallback) {
  thirdPartyLibrary.performAsyncTask((resultObject, errorObject) => {
    if (errorObject) return errorCallback(errorObject);
    else return successCallback(resultObject);
  });
}

// other file:
x(
  function handleSuccess(resultObject) {
    // handle success
  },
  function handleError(errorObject) {
    // handle error
  }
);

09-17 08:50