Safari 为后台任务放弃记分 iOS 14
作者: idoodler创建于 2020年7月10日更新于 2020年11月4日
我们正在开发一个基于 Cordova 的 iOS 应用。在 iOS 13 上一切都运行正常,但在 iOS 14 中我们遇到了问题。每当应用被发送到后台并再次检索时,由于我们使用了 Q.js 来管理视图,应用就无响应了。通过 Safari Web Inspector 调试时,我注意到 var def = Q.defer(); def.promise.done(function(value) { alert(value); }); def.resolve("Done") 在发送应用到后台之前是有效的,但在发送之后就失效了。但是原生的 JavaScript 承诺却如预期地工作 new Promise(function(resolve, reject) { resolve("Done"); }).then(function(value) { alert(value) });
使用 def.promise.inspect() 检查 def 变量时,状态已解析,我可以看到值,但没有任何函数(resolve、reject、finally)被调用,无论是在 done 函数中,还是在 then 函数中。
内容来源: kriskowal/q