Promise中的链接未按预期工作

时间:2017-01-08 07:22:35

标签: javascript node.js promise q

我面临着承诺的问题......而且现在已经差不多一个小时了我的头......

this.getDocument(documentId)
.then(function (response) {
     console.log('in first then')
     return 'from first then';
}).then(function (response) {
     console.log(response)
});

理想情况下,上面的代码应该提供以下输出

  in first then
  from first then

但实际输出如下

  in first then
  undefined

现在问题在于,当我从第一个then返回内容时,第二个then得到的回复是未定义的。

  

[编辑1] 添加getDoument代码

function getDocument(documentID) {
        var config = {
            url: '<URL>' + documentID,
            headers: {enter code here
                'Content-Type': 'application/json'
            }
        };
        return HttpRequest.get(config);
    }

var HttpRequest = (function () {
    function HttpRequest() {
    }
    HttpRequest.get = function (config) {
        var deferred = Q.defer();
        var http = new XMLHttpRequest();
        var url = config.url;
        var authToken = window.localStorage.getItem('token');
        http.open("GET", url, true);
        Object.keys(config.headers).map(function (k) {
            http.setRequestHeader(k, config.headers[k]);
        });
        http.setRequestHeader("Authorization", 'Bearer ' + authToken);
        http.onreadystatechange = function () {
            if (http.readyState !== 4)
                return;
            var response = http.responseText;
            if (http.status != 200)
                return deferred.reject(response);
            deferred.resolve(response);
            // if (/^[^2]\d\d$/.exec(http.status)) return deferred.reject(http.status);
        };
        http.send();
        return deferred.promise;
    };
    HttpRequest.post = function (config) {
    };
    return HttpRequest;
}());

0 个答案:

没有答案