【发布时间】:2016-05-31 12:19:56
【问题描述】:
注意:我对 js 的 exp 有限,如果我描述这种情况的方式完全错误,请纠正我。
我有两个 javascript 文件。我在第一个文件(客户端)上调用一个函数,该函数在第二个文件上调用一个函数,并使用第二个文件函数的回调来达到第一个文件上的response.success/.error 的目的。
如果这没有意义,这里有一些代码:
注意:这是暂时使用 Parse 的云功能完成的。让我知道是否需要有关这些的更多信息,但不确定是否重要。
第一个文件:
Parse.Cloud.define("methodName", function(request, response) {
...
secondFile.myFunction(param1, {
stuff: request.params.stuff,
}, function (err, res) {
if (err) {
response.error(err);
} else {
response.success(res);// I'm assuming this is going to the hardcoded "yes." from httpRequest on second file's function
}
});
});
第二个文件:
myFunction: function(param1, properties, callback) {
if (!param1) return callback(new Error("Helpful error message"));
var headersForReq = {
...
};
var bodyForReq = ...; // the properties properly parsed
Parse.Cloud.httpRequest({
method: 'PUT',
url: ...,
headers: headersForReq,
body: bodyForReq,
success: function (httpResponse) {
callback(null, 'yes'); // the hardcoded "yes" i referred to
},
error: function (httpResponse) {
callback(httpResponse.status + httpResponse.error);
}
});
}
在我的客户端上,代码被视为成功(不会抛出或返回错误),但当我打印出该值时,它会显示为 (null) 而不是“是”。
这里发生了什么? (旁注,httpRequest 目前没有做任何事情,很难验证请求是否被正确发送,因为它被发送到第三方 API。
我知道第二个文件的方法被正确调用了。所以module.exports 或var secondFile = require('\path\secondFile') 不是一个愚蠢的问题
【问题讨论】:
-
您究竟在哪里/如何“打印”出值?
-
在客户端我调用这个 Parse "PFCloud" 函数。它返回一个对象(无论您在第一个函数的 response.success 中放入什么),如果出现错误,则返回一个错误。例如,在第一种方法中,如果我硬编码
response.success('yes')而不是response.success(res),客户端上的控制台将打印出“是”作为返回的对象 -
在您的客户端中,既没有显示响应值也没有出现异常?
-
没有。响应值显示的唯一时间是当我硬编码某些内容时,而不是使用回调中的
err或res值 -
@ChunTingLin 我假设我正确使用了回调?我复制了语法,但不确定是否应该将它传递给 null 并且只在成功调用中传递一个 res 值,以及我是否可以只在错误调用中传递第一个值(应该是错误)而逃脱第二个文件
标签: javascript parse-platform callback