我有一个Phonegap应用程序,该应用程序可以在预览版应用程序上完美运行,但是当我使用Phonegap Build创建APK并将其安装在Android设备上时,除了Promise中的任何代码外,它都可以部分运行。我添加了一些警报,我注意到它在Promise之前就停止工作。
我有以下代码:
{
alert('passwordreset before promise');
return new Promise((resolve, reject) => {
alert('inside promise');
this.api.call( '/' + this.endpoint + '/recover', {email: email})
.then(response =>
{ alert('promise succes');
resolve(response);
})
.catch(errors =>
{
reject(errors);
});
});
}
将执行第一个警报(promise之前的密码),而不执行其他警报。
您是否知道可能会发生什么?
答案 0 :(得分:0)
您使用Android Studio吗?如果是这样,请检查“ LogCat”选项卡中的日志。 您是否设置了正确的CORS设置?看来您正在发出一些api请求。 在MSDN中,有一篇不错的文章描述了您可能缺少的设置:https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/security/whitelists?view=toolsforcordova-2017
由于默认情况下禁用Android 9明文。如果问题仍然存在,请验证您的network_security_settings.xml(如果已设置)。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">10.0.1.1</domain> <!-- Set local api -->
</network-security-config>
您可以在Android清单中设置网络设置文件
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
...
</application>
</manifest>
答案 1 :(得分:0)
Webview中不支持承诺。您需要为ES5转换/编译JS代码。
属于ES2015 JavaScript规范(也称为ES6)的部分。
如果需要填充,请查看https://www.promisejs.org/