我有一个云代码,可以从中调用一个外部函数。云代码响应为空,但控制台显示响应
我的云代码;
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: '[email protected]',
};
externalFunction (ccaddrequest, function (err, result) {
console.log(result);
return result;
}) ;
} catch (e) {
console.log("Error");
}
});
“ console.log(结果);”显示来自外部函数的值,但显示“返回结果”;返回null
如何获得外部函数响应作为我的云代码函数的响应?
问题是您的externalFunction
使用回调返回其结果。这是一个异步事件,这意味着它在处理完云功能之后发生。
云函数将执行var ccaddrequest...
,然后调用externalFunction
,但它不会“等待” externalFunction
来调用回调函数。
因此您需要将externalFunction
包装在Promise中(请参见how to promisify callbacks),然后将await
包裹在结果中。
另外,您需要返回Promise的结果,因此需要在代码中添加
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: '[email protected]',
};
var result = await externalFunctionPromise(...);
return result;
} catch (e) {
console.log("Error");
}
});