【发布时间】:2016-12-09 07:56:23
【问题描述】:
我有以下代码:
return new Promise (function (resolve,reject) {
if (this.ImageData && averageColor) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
console.log("Image found");
resolve(xhr.response);
}else {
console.log("Image not found");
reject();
}
}
xhr.open('GET', 'http://localhost:8765/color/'+averageColor, true);
xhr.send(null);
}
else {
reject();
}
});
调用这段代码的函数如下:
var v = tile.getImage(tile.getColorAverage());
v.then(function (value) {
console.log("laughing");
}).catch(function () {
console.log("Catch called");
});
问题在于我的承诺,我可以看到它处于 if 条件并正确地从服务器获取响应(因为 console.log)。然而,另一方面,它根本没有进入“当时”的承诺(甚至一次都没有)。由于某种原因,它会被拒绝。我要疯了,因为我可以看到它执行了应该解决它的位,但那时我什么也没得到。任何帮助将不胜感激。
已编辑:
现在我只运行了一次。这是我的 console.log 跟踪。现在更加困惑:
【问题讨论】:
-
您希望
this包含在Promise解析器函数中吗? -
你能在两个拒绝呼叫之前放一个控制台.log - 只是为了调试
标签: javascript asynchronous promise