Javascript 无法在解析云函数中从httpRequest检索结果
我在一个云函数中运行一个Parse-httpRequest,我从另一个解析作业调用它。我不知道如何从我在云作业中调用的云函数中检索结果值/成功值 以下是云函数的代码:Javascript 无法在解析云函数中从httpRequest检索结果,javascript,backbone.js,parse-platform,Javascript,Backbone.js,Parse Platform,我在一个云函数中运行一个Parse-httpRequest,我从另一个解析作业调用它。我不知道如何从我在云作业中调用的云函数中检索结果值/成功值 以下是云函数的代码: Parse.Cloud.define("maps_request", function(request, response) { var maps_url = 'http://maps.googleapis.com/maps/api/directions/json'; var origin = request.params
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)
解析日志显示了我希望从云函数得到的确切结果,但我得到了以下结果:
“{U resolved]:false,{U rejected]:false,{U resolvedCallbacks:[],“{U 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显示了正确的值,但仍然无法访问它们或分配给变量。听起来不错-您正在将“promise”的值记录到控制台。您必须实际解析()promise,让它调用您的云函数等等。无需包装
Parse.Cloud.run()
在承诺中,因为它已返回承诺
同样,在第二个示例中,您调用云函数,就好像它是一个sync调用,而不是async,并查看承诺而不是您想要的结果
试试这个:
Parse.Cloud.run('maps_request', {
origin: String(driverOriginAddress + " " + driverOriginZip),
destination: String(driverDestinationAddress + " " + driverDestinationZip),
waypoint: String(driverDestinationAddress + " " + driverDestinationZip)
}).then(function (result) {
// we have the result of the cloud function here, just log it for now
console.log("Test:", result);
}, function (error) {
// uh oh!
console.log(error);
});
谢谢你的回复。我如何/在哪里解决这个承诺?添加了另一个版本的代码,我一直在使用,返回类似的响应。