【发布时间】:2018-05-12 23:30:31
【问题描述】:
如何仅在特定功能完成时发送响应。我尝试为此使用承诺,但这似乎不起作用。
let dealPromise = new Promise(function(resolve, reject){
for (let i = 0;i < deals.length;i++) {
let link = 'https://api.cortellis.com/api-ws/ws/rs/deals-v2/deal/' + deals[i] + '?fmt=json';
let options = {
method: 'GET',
uri: link,
auth: auth,
};
let constant = constants.collection('clarivate');
request(options, function(error, response, body) {
body = JSON.parse(body).dealRecordOutput;
if (body.length === 0) {
res.status(204).json({'data': []});
next();
}
else {
let type = body.Type;
type_list.push(type);
let status_val = body.Status;
status_list.push(status_val);
resp['type'] = type_list;
resp['status'] = status_list;
}
});
}
resolve(resp);
});
dealPromise.then(function (result) {
res.status(200).json({'data': result});
});
还有其他方法可以解决这个问题吗?
【问题讨论】:
-
神秘的
resp声明在哪里? -
和
type_list和status_list -
您的代码并未真正显示您想要的功能。开放式问题。当您在迭代过程中收到
body.length === 0时,您希望发生什么?仅供参考,在您发送回复后致电next()也绝不是您想要做的。你想用type_list和status_list和resp做什么?result是什么?我有一个新的结构来做这个,主要是书面的,但是没有这些答案,我不能发布对你有用的东西。