javascript - 创建一个基于当前平台的 Promise 对象

标签 javascript angularjs cordova promise

我正在使用 Apache Cordova,我遇到了一个关于 Promise 对象的多平台问题。

目前,我必须像这样实例化一个 promise:

var promise = new Promise(...) {
    //Implementation
}

这很好,但是如果应用程序在 Windows 平台上运行,我必须改用 WinJS。像这样:

var promise = new WinJS.Promise(...) {
    //Implementation
}

这导致以下代码:

var promise;

if (cordova.platformId == "windows") {
    promise = new WinJS.Promise(...) {
        //Implementation
    }
} 
else {
    promise = new Promise(...) {
        //Exactly the same implementation as above
    }
}

这里的主要问题是我在每个 promise 中复制实现,导致两个完全相同的代码块。因此更难维护。

有没有一种方法可以根据当前平台实例化正确的 Promise 而无需重复代码两次?

最佳答案

如果 Promise 不存在,您可以将其分配给 WinJS.Promise,然后像往常一样使用 Promise

喜欢:

if (typeof Promise === 'undefined' && cordova.platformId === 'windows') {
  Promise = WinJS.Promise; // global assignment
}

// At this point you can use new Promise() as usual

关于javascript - 创建一个基于当前平台的 Promise 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946773/

相关文章:

javascript - Monaca (Cordova) Iframe = 非常有问题?

javascript - 单击打开 Accordion ,第二次单击关闭 Accordion

asp.net - RouteConfig刷新页面时触发500错误

javascript - 尝试在 Promise 中设置值。然后返回未定义

angularjs - 用户身份验证后设置 $httpProvider 默认 header

android - 我需要学习 java 才能构建 Android 应用程序吗?

javascript - 在 AngularJS 中处理大型数据集

javascript - 国家代码验证

javascript - 如果元素被删除,我是否必须从 DOM 中清除事件?

ios - 在 Cordova 项目中没有收到解析推送通知