JavaScript运行时错误:'Promise'未定义

Mik*_*son 0 javascript promise cordova win-universal-app

我正在开发一个针对Android和Windows(通用)的Apache Cordova应用程序,但是在Windows平台上,我在运行应用程序时收到以下错误.

0x800a1391 - JavaScript运行时错误:'Promise'未定义

这个问题似乎是Windows通用应用程序所独有的,在Android上运行良好.

有问题的功能如下:

function requestData(ext, params, method) {
    return new Promise(function (resolve, reject) {
        var req = new XMLHttpRequest();

        var url = "https://someurlhere/api/" + ext;

        req.open(method, url, true);

        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Authorization", token);

        req.onreadystatechange = function () {//Call a function when the state changes.
            if (req.readyState == 4 && req.status == 200)
                resolve(JSON.parse(req.responseText));

            console.log(req.status + ' ' + req.statusText);
        }

        req.onerror = function () {
            reject(req.responseText);
        }

        req.send(params);
    });
};
Run Code Online (Sandbox Code Playgroud)

错误在以下行:

return new Promise(function (resolve, reject) {
Run Code Online (Sandbox Code Playgroud)

我猜,因为问题只发生在Windows平台上,那我就错过了这个Promise对象.我猜这是一个我需要包含在项目中的文件.

有任何想法吗?

Chr*_*ler 6

您应该检查Promise对象的浏览器支持.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

IE上没有支持.

Apache Cordova WinJS内置了.所以只需使用:

return new WinJS.Promise(...)

  • 你仍然可以填充它. (2认同)