Ionic应用程序在部署后给出ReferenceError:未定义Promise
Ionic app after deploying gives ReferenceError: Promise is not defined
我正在制作我的第一个Ionic应用程序。它的一部分使用了承诺。
下面的例子说明了这个问题。(在视图中,我有一个启动$scope.test的按钮,它执行testProm()函数)。
angular.module('myApp.controllers', [])
.controller('DashCtrl', function($scope, $state) {
$scope.test = function() {
testProm();
}
});
function testProm() {
console.log('1. Function testProm starting...');
return new Promise(function(resolve, reject) {
console.log('2. Hi from Promise');
var something = ' Some text ';
resolve(something);
}).then(function(something) {
console.log('3. Hi again. Something is: ' + something);
});
}
在浏览器(Firefox、Chrome)和安卓5.1.1的索尼Xpreria平板电脑上,一切都很好。
当我部署到安卓4.4.2的廉价Woxter QX103平板电脑时,问题就开始了。在这种情况下,当我尝试运行我的函数时,它在控制台中给了我以下错误:
ReferenceError: Promise is not defined
at testProm (file:///android_asset/www/js/controllers.js:825:14)
at Scope.$scope.test (file:///android_asset/www/js/controllers.js:29:5)
at fn (eval at <anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:26457:15), <anonymous>:4:203)
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:62386:9
at Scope.$eval (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:29158:28)
at Scope.$apply (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:29257:23)
at HTMLButtonElement.<anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:62385:13)
at HTMLButtonElement.eventHandler (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:16583:21)
at triggerMouseEvent (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2948:7)
at tapClick (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2937:3)
奇怪的是,我使用CouchDB也使用promise,它运行得很好。我做错了什么?这是我的第一个javascript,我对此非常缺乏经验。
我认为它在较旧的浏览器中根本不受支持,如下所示。根据我的经验,这可以很容易地通过使用Angular自己的Promises实现来解决,它看起来像这样:
return $q(function(resolve, reject) {
setTimeout(function() {
if (okToGreet(name)) {
resolve('Hello, ' + name + '!');
} else {
reject('Greeting ' + name + ' is not allowed.');
}
}, 1000);
});
您可以在文档中找到有关$q
服务的更多信息。因此,在您的代码中,如果您要用$q
替换new Promise
,并确保将其定义为依赖项,那么您应该可以使用它。
相关文章:
- 未捕获的ReferenceError:$未定义
- ReferenceError: not defined
- ReferenceError: cordova is not defined @ng-cordova.min.js:7
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- Node.js错误“;ReferenceError:全局未定义“;在从0.10.2更新到0.12.2之后
- 未捕获的ReferenceError:未定义VM1299:1(匿名函数)
- React ReferenceError:未定义文档
- ReferenceError: $firebase is not defined
- 未捕获的ReferenceError:webkitNotifications未定义
- 尝试将js函数更改为coffeescript时发生Uncaught ReferenceError
- Web用户控件中Javascript的ReferenceError
- ReferenceError: crimeID is not defined
- Rails Uncaught ReferenceError:$$未定义为升级到jquery
- 懒惰加载插件抛出Uncaught ReferenceError
- 未捕获的ReferenceError:未定义测试(函数)
- 未捕获的ReferenceError:未在单击时定义
- ReferenceError:未定义角度
- Ionic应用程序在部署后给出ReferenceError:未定义Promise
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- ReferenceError:require未在javascript中定义