Примечание: У меня ограниченный exp с js, так что поправьте меня, если я полностью ошибаюсь в том, как я описываю этот сценарий.Как успешно использовать обратный вызов функции javascript с запросом http
У меня есть два файла 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')
Где/как именно вы «распечатываете» значение? – Pointy
на клиенте Я называю эту функцию «PFCloud». Он возвращает объект (независимо от того, что вы ввели в response.success первой функции) или ошибку, если есть ошибка. например, в первом методе, если я жестко задал 'response.success ('yes')' вместо 'response.success (res)' консоль на клиенте выведет «да» в качестве возвращаемого объекта – gadu
В вашем клиенте ни значение ответа показывает или не получает исключение? – ChunTingLin