使用promise构造函数将值发送回服务器

时间:2017-10-19 04:19:52

标签: javascript node.js callback promise xmlhttprequest

我正在使用promise函数来宣传XHR,我想知道如何获得响应,并在响应成功时将其发回服务器。

我正在做这样的事情

function createChannel(method, url) {
    return new Promise(function (resolve, reject) {
        xhr.open(method, url, true);
        xhr.setRequestHeader("Content-Type", "application/json");
    xhr.onload = function () {
        if (xhr.readyState == 4 ) {
            var hashValue = resolve(JSON.parse(xhr.responseText));
            console.log(hashValue);
        }
        else {
            reject({
                status: this.status,
                statusText: xhr.statusText
            });
        }
    };
    xhr.onerror = function () {
            reject({
                status: this.status,
                statusText: xhr.statusText
            });
        };
    xhr.send(json);
});
}
createChannel(method, url)
    .then(function (datums) {
    console.log(datums)
}).catch(function (err) {
    console.error('Sorry There Was An Error!', err.statusText);
});

如果此createChannel成功,我将获取hashvalue变量,并向服务器发出请求以获取新值。

.then(function (createChannel) {
    console.log(createChannel);    
});

这可能是使用承诺吗? 谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

.then()处理程序中,您只需发出一个新请求并返回该承诺,将其链接到第一个:

createChannel(method, url).then(function (datums) {
    console.log(datums);
    // call some other async function here that returns a promise
    return someOtherFunctionThatReturnsAPromise(datums);
}).then(function(finalResult) {
    console.log(finalResult);        
}).catch(function (err) {
    console.error('Sorry There Was An Error!', err.statusText);
})