gpt4 book ai didi

javascript - 找不到变量 : Promise on Safari

转载 作者:可可西里 更新时间:2023-11-01 03:37:48 27 4
gpt4 key购买 nike

我有一个网站可以在桌面版 Chrome 上完美运行(Windows 8.1OS X Mavericks)

当我在 iOS 7Safari 7.0.2 上运行它时,我在控制台上收到一条错误消息

Error while loading route: checkIfLoggedIn

它在消息中指定的成员不是路由,它是一个返回 promise 的方法。当我调试 ember 代码以找出问题所在时,我发现它拒绝了 promise,原因是

Can't find variable: Promise

我无法在此处发布我网站上的实际代码,因此我着手创建一个可以重现错误的 fiddle ,然后我想出了这个:

http://jsfiddle.net/NQKvy/851/

这在桌面版 Chrome(Windows 8.1 和 OS X Mavericks)上运行完美,但在 iOS 7 或 Safari 7.0.2 上会向控制台抛出以下错误

ReferenceError: Can't find variable: Promise

有人知道为什么这不起作用吗?

回顾一下:

  • 我已经在适用于 Windows 8.1 和 OS X Mavericks 的 Chrome 上进行了测试 - 它有效
  • 我已经在 iOS 版 Chrome 上进行了测试,但它无法正常工作
  • 我已经在适用于 iOS 和 OS X Mavericks 的 Safari 上进行了测试,但它不起作用
  • 我根本没有在 Android 上进行过测试(目前我无法访问任何设备)

这让我相信这是一个 Safari 错误,因为(如果我没记错的话)iOS 版 Chrome 使用 Safari 控件而不是 Chromium 来呈现页面

这是我用来生成错误的代码:

App.ready = function() {
var asdf = new Promise(function (resolve) {
var i = 1;
i++;
resolve.call(this,i);
}).then(function (result) {
alert('I: ' + result);
});
};

最佳答案

事实证明,在 Safari 上,您必须在创建 promise 时使用完全限定名称,否则它将无法工作:

App.ready = function() {
var asdf = new Ember.RSVP.Promise(function (resolve) {
var i = 1;
i++;
resolve.call(this,i);
}).then(function (result) {
alert('I: ' + result);
});
};

请注意“new Ember.RSVP.Promise”而不是“new Promise”。这似乎为我解决了这个问题。

关于javascript - 找不到变量 : Promise on Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com