AngularJS - cordova android上的意外标记“catch”

时间:2014-11-20 15:33:15

标签: javascript android angularjs cordova try-catch

我构建了一个简单的web应用程序在cordova wbeview中运行,当我在android 4.1上安装它运行时没有问题,但是当我在Android 2.3.6上安装它时(很老了)

Unexpected token "catch" file.js LINE 134

这意味着这个捕获表达式无法工作:

 $http({
            'method':'GET',
            'url': appWS + '/api/find'
          }).then(function (response) {

           //
          }).catch(function (err) {

           //
          });

我无法理解为什么不支持catch可能太旧的android确定,但我怎么能解决这个问题?

谢谢,任何帮助表示赞赏

2 个答案:

答案 0 :(得分:4)

尽管@Pointy指出,.catch()是通常使用angualr承诺(以及q库)的方式。我想这实际上是你正在测试的android版本中的一个错误(事实证明它适用于较新的版本)。

您可以尝试使用(等效)方括号表示法来调用该函数,如下所示:

$http(options)
  .then( function () { /* do stuff */ } )
  ['catch']( function () { /* handle errors */ } );

或内部函数sintax

$http(options)
      .then( function () { /* do stuff */ }, function () { /* handle errors */ } );

哪个可以解决问题。

答案 1 :(得分:2)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch#Browser_compatibility谈到捕获。

要理解的关键是旧版浏览器对"保留关键字"相当严格/保守,他们不确定如何在"未来&#中使用#" 34 ;. Java也不会与JavaScript交互。

最终,浏览器JavaScript引擎和浏览器对事物的混合方式变得充满信心(粗略地说,Java在网页中没有出现在源代码中,现在它很少以二进制.class形式出现),它是好吧放松约束"保留字不能在任何情境中使用"允许它们在可以安全理解解析的地方使用。

" NAME"函数NAME(){}的一部分是解析足够安全和​​明确的上下文之一。

另一个是Object.PROPERTY。

由于这些都是你需要的:Promise.catch(stuff),JavaScript允许在现代浏览器中使用。

Android 2设备没有现代浏览器/现代JavaScript引擎,因此,当您尝试使用此功能时会出现更具侵略性的语法错误。

@ Ed-Hinchliffe是正确的,他的解决方法就是你如何使用旧的JS引擎。