是科尔多瓦支持最后的方法吗?

时间:2018-09-02 18:38:20

标签: cordova android-emulator cordova-plugins

我不明白为什么该代码不起作用:

this.doMagic() // <- there is a Promise which do 'reject'
  .then(_ => {
     alert('test 1') // <- this is not working (OK)
  })
  .catch(_ => {
     alert('test 2') // <- it is working  (OK)
  })
  .finally(_ => {
     alert('test 3') // <- it is not working (NOT OK)
  })

在浏览器中,一切正常,但我启动了模拟器,“测试3”不起作用

起初,我认为可能是因为警报不起作用。但不是。如果您添加了更多警报,它们将正常工作

通常,我有2个假设:

1)科尔多瓦不支持finally

2)我不知道发生了什么,并在某个地方犯了错误

那么,哪里是真的?

1 个答案:

答案 0 :(得分:0)

Promise.prototype.finally是tc39进程的currently at stage 4。第4阶段表示如果您的浏览器支持,则可以安全使用它。它将包含在next version of the ECMAScript standard中。

您可以找到当前的浏览器支持here。因此,如果您要在Android设备(或仿真器)上进行测试,则需要Chrome 63(或更高版本)。我的猜测是您有一个较旧的版本(也许您正在使用人行横道)。

您有两个选择:

  • 使用编译器(Typescript,Babel等)将您的JS转换为手机支持的旧标准(例如ES2015)
  • 使用类似this的变通办法