我正在使用 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/