我是JS的初学者,想要在Node.js中发送顺序请求。 我正在尝试使用Promises(Bluebird)。我正在使用supertest库来发送请求。当我执行函数call()时,在sendRequest()之前执行debug(),但是我想在sendRequest解析后运行调试。怎么做到这一点?
var call = function() {
getConfig
.then(function(config) {
sendRequest(config);
})
.then(function(result) {
debug('Result', result);
});
}
var getConfig = new Promise(function(resolve, reject) {
var config = injector.get('config');
config.property = newProperty;
if (config) {
resolve(config);
} else {
reject('Config is ', config);
}
});
var sendRequest = function(configFile) {
var config = configFile;
return new Promise(function(resolve, reject) {
request(server)
.get(endpoint)
.expect(200)
.end(function(err, res) {
if (err) {
reject(err);
}
resolve(res.body);
});
})
};
如何将这些getConfig和sendRequest中的几个调用链接在一起,以便它们在上一个操作完成后启动?
var result1;
var result2;
var call = function () {
getOldConfig
.then(function (config) {
return sendRequest(config);
})
.then(function (result) {
result1 = result;
})
.then(getActualConfig)
.then(function (config) {
return sendRequest(config);
})
.then(function (result) {
result2 = result;
});
}
答案 0 :(得分:1)
你需要返回内心的承诺
getConfig
.then(function (config) {
return sendRequest(config); // NB
})
.then(function (result) {
debug('Result', result);
});