在三个异步cordova调用完成后,我需要进行第四个调用,如何实现这一点?

os8fio9y  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(130)

我有三个cordova.exec调用和它的执行aysnc。我的目标是在完成所有三个调用后调用第四个cordova调用。我不能嵌套调用使它同步,但我需要在三个调用完成后调用第四个(像jquery中的promise/when)。

lc8prwob

lc8prwob1#

您将需要Cordova promise polyfil。然后像其他人一样编写代码:

//exec as promise
var execPromise = function(){
  return new Promise(
    function(resolve,reject){
      cordova.exec.apply(
        cordova,
        [
          resolve,
          reject
        ].concat(
          Array.prototype.slice.apply(arguments)
        )
      )
    }
  );
}

Promise.all(
  [
    execPromise(args),
    execPromise(args),
    execPromise(args)
  ]
)
.then(
  function(results){
    console.log("three are done, results are:",results);//array of results
    return execPromise(args);
  }
)
.then(
  function(result){
    console.log("all are done, result:",result);
  }
)
.catch(
  function(err){
    console.log("something went wrong, error is:",err);
  }
);

相关问题