WebView Android - 正确排队异步请求的方法

时间:2018-01-08 15:20:11

标签: javascript android asynchronous webview promise

我有一个我在网络视图中实施的Android应用。我的应用程序的一个基本部分是我有一个重试某些API调用的队列(队列存在,因为它们需要按顺序发生,但网络条件并不总是可靠的,所以我必须在它失败时重试。)

以下代码显示了我的基本知识:我调用API,如果成功,我将删除作业并转到队列中的下一个作业;否则我记录错误,等待5秒,然后再尝试处理它。

return callAPI(job.parameters).then(function(result){
    _queue._removeJob(job.id);
    processNext();
}).catch(function(e){
    // need to be able to tell the difference between a NETWORK error and an API error
    // retry later on NETWORK error
    // record all other errors, along with the parameters
     Logger.log('API error', e);
     setTimeout(processNext,5000)
})

我的队列系统在99%的时间内正常工作,但有时由于某种原因,承诺永远不会在.then或.catch中结束,所以' processNext'永远不会被召唤。

我很高兴可能会使用Promise.race()来设置错误并进入.catch的超时条件,但我担心应用程序不在手机上的情况会发生什么;焦点 - 当应用程序在后台时,此队列会发生什么?有没有更合适的方法来运行此队列?我应该设置一些外部setInterval以定期检查队列是否按预期运行,并且如果它没有在2分钟内消失则再次启动它?

0 个答案:

没有答案