【发布时间】:2014-10-09 19:13:01
【问题描述】:
我在 Cloud 函数中运行 Parse httpRequest,我从另一个 Parse 作业调用该函数。我无法弄清楚如何从我在云作业中调用它的云函数中检索结果值/成功值。
云函数的代码如下:
Parse.Cloud.define("maps_request", function(request, response) {
var maps_url = 'http://maps.googleapis.com/maps/api/directions/json';
var origin = request.params.origin;
var destination = request.params.destination;
var waypoint = "via:" + request.params.waypoint;
Parse.Cloud.httpRequest({
url: maps_url,
params: {
origin: origin,
destination: destination,
waypoints: waypoint,
optimizeWaypoints: true,
durationInTraffic: true
},
success: function(directions) {
var time = directions.data['routes'][0]['legs'][0]['duration']['value']
time = time / 60.00
response.success(time)
},
error: function(error) {
response.error("Shit broke.")
}
})
});
以及云端作业中的调用代码:
var promise = Parse.Promise.as();
promise = Parse.Cloud.run('maps_request', {
origin: String(driverOriginAddress + " " + driverOriginZip),
destination: String(driverDestinationAddress + " " + driverDestinationZip),
waypoint: String(driverDestinationAddress + " " + driverDestinationZip)
}, {
success: function(results) {
console.log("Results: " + results)
},
error: function(){
console.log("Error")
}
})
console.log(promise)
Parse 日志显示了我想要从 Cloud 函数获得的确切结果,但我得到了这个: "{"_resolved":false,"_rejected":false,"_resolvedCallbacks":[],"_rejectedCallbacks":[]}
我已经尝试了大约 50 种不同的版本来解决这个问题。任何帮助将不胜感激。
这是另一个版本的云功能代码:
Parse.Cloud.define("maps_request", function(request, response) {
var maps_url = 'http://maps.googleapis.com/maps/api/directions/json';
var origin = request.params.origin;
var destination = request.params.destination;
var waypoint = "via:" + request.params.waypoint;
var test = []
Parse.Cloud.httpRequest({
url: maps_url,
params: {
origin: origin,
destination: destination,
waypoints: waypoint,
optimizeWaypoints: true,
durationInTraffic: true
},
success: function(directions) {
var time = directions.data['routes'][0]['legs'][0]['duration']['value']
time = time / 60.00
test.push(time)
},
error: function(error) {
console.log("Error")
}
}).then(function() {
response.success(test[0])
}, function (error) {
response.error("Error2")
})
});
然后调用:
var test = Parse.Cloud.run('maps_request', {
origin: String(driverOriginAddress + " " + driverOriginZip),
destination: String(driverDestinationAddress + " " + driverDestinationZip),
waypoint: String(driverDestinationAddress + " " + driverDestinationZip)
})
console.log("Test: " + test)
httpResponse 显示正确的值,但仍然无法访问它们或分配给变量。
【问题讨论】:
标签: javascript backbone.js parse-platform