【发布时间】:2015-02-26 22:22:01
【问题描述】:
我正在包装XMLHttpRequest 的一些功能。我将延迟的解决方案附加到触发的事件onload。 IIUC XMLHttpRequest 在XMLHttpRequest 调用的回调中设置this 的值以包含响应详细信息(响应文本、状态代码等)。
但我使用的是q,而this 的值在延迟的分辨率中丢失了。如何确保将响应详细信息传播到使用 promise then 注册的回调?
XMLHttpRequestWrapper.prototype.get = function(url) {
var deferred = q.defer();
var request = new XMLHttpRequest();
request.onload = function() {
// this now contains the response info
deferred.resolve.apply(this, arguments); // 'this' is lost in the internals of q :(
};
request.onerror = function() {
deferred.reject.apply(this, arguments);
};
request.open('GET', url, true);
request.send();
return deferred.promise;
}
【问题讨论】:
-
q.defer();这里的q是什么?
-
您无法在回调中控制
this的值。指定为undefined。 -
@AbhisekMalakar github.com/kriskowal/q
-
@Bergi,所以我需要将
this作为参数提供给使用then注册的回调?
标签: javascript promise q