【发布时间】:2017-05-08 13:24:57
【问题描述】:
我正在尝试在 parse.com 服务器上的 nodejs 中串联实现 3 个 httprequest。我仍在试图弄清楚它是如何工作的。目前,以下代码不会引发语法错误,但也会在服务器日志中返回一个空白的 console.log。非常感谢任何帮助。
Parse.Cloud.define('paypalCheck', function (request, response) {
Parse.Cloud.httpRequest({
method: 'POST',
url:url1,
body:body1
}).then(function(httpResponse){
console.log(httpResponse.text.split("\n")[0])
var promises = [];
var updated = false;
if(httpResponse.text.split("\n")[0] == 'FAIL'){
var orderUpdate = Parse.Cloud.httpRequest({
method: 'POST',
url:url2,
headers:header2,
body:body2
}).then(function(httpResponse) {
console.log('updated')
updated = true;
return 'order updated';
});
promises.push(orderUpdate);
}
if(updated){
var orderFetch = Parse.Cloud.httpRequest({
method: 'GET',
url:url3,
headers:header3
}).then(function(httpResponse) {
return_url = httpResponse.data.order.order_status_url
return httpResponse;
});
promises.push(orderFetch);
}
return Parse.Promise.when(promises)
}).then(function(httpResponse){
console.log('result');
console.log(httpResponse);
response.success(return_url)
}, function(error){
console.log('result');
response.error(error)
})
})
【问题讨论】:
-
你是说你连
result都没有打印出来吗?一个空白console.log听起来很奇怪。并且并行?您的代码正在按顺序执行请求,因为您正在等待第一个httpRequest和url1。您想为每个 url 独立运行请求,还是它们在某种程度上相互依赖? -
您的
updated语句看起来很奇怪,因为您在回调中设置它,但在 if 条件中使用它(这表明您要等待更新)。如果是这样,我宁愿在orderUpdate请求之上再写一个then声明 -
@DanielB.. 我的错误.. 他们应该是连续的.. 我正在编辑这个问题.. 是的.. 这是一个空白的
console.log,甚至没有打印result -
@Icepickle.. 我的错误,电话是串联的.. 一个接一个..
-
@Icepickle
2nd httprequest应该仅在来自1st httprequest的响应匹配条件时发生。同样,3rd httprequest应该在2nd httprequest上成功运行。3rd httprequest的响应是返回到前端。
标签: javascript node.js parse-platform promise httprequest