调用带有回调的函数后,解析云代码响应为空
Parse Cloud Code response is null after calling a function with callback
我有一个云代码,我从中调用外部函数。
云代码响应为空但控制台显示响应
我的云码;
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: 'email@email.com',
};
externalFunction (ccaddrequest, function (err, result) {
console.log(result);
return result;
}) ;
} catch (e) {
console.log("Error");
}
});
console.log (result);
显示来自外部函数的值,但是 return result;
returns null
如何获取外部函数响应作为我的云代码函数的响应?
问题是您的 externalFunction
使用回调 return 其结果。这是一个异步事件,这意味着它发生在您的云函数被处理之后。
云函数会执行var ccaddrequest...
,然后调用externalFunction
,但如果包含异步命令,它不会"wait" for externalFunction
调用回调函数。
因此您需要将 externalFunction
包装在一个 Promise 中(参见 how to promisify callbacks),然后 await
它的结果。
此外,您需要 return Promise 的结果,因此您需要在代码中添加
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: 'email@email.com',
};
var result = await externalFunctionPromise(...);
return result;
} catch (e) {
console.log("Error");
}
});
我有一个云代码,我从中调用外部函数。 云代码响应为空但控制台显示响应
我的云码;
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: 'email@email.com',
};
externalFunction (ccaddrequest, function (err, result) {
console.log(result);
return result;
}) ;
} catch (e) {
console.log("Error");
}
});
console.log (result);
显示来自外部函数的值,但是 return result;
returns null
如何获取外部函数响应作为我的云代码函数的响应?
问题是您的 externalFunction
使用回调 return 其结果。这是一个异步事件,这意味着它发生在您的云函数被处理之后。
云函数会执行var ccaddrequest...
,然后调用externalFunction
,但如果包含异步命令,它不会"wait" for externalFunction
调用回调函数。
因此您需要将 externalFunction
包装在一个 Promise 中(参见 how to promisify callbacks),然后 await
它的结果。
此外,您需要 return Promise 的结果,因此您需要在代码中添加
Parse.Cloud.define("testccadd", async request => {
try {
var ccaddrequest = {
conversationId: '123456789',
email: 'email@email.com',
};
var result = await externalFunctionPromise(...);
return result;
} catch (e) {
console.log("Error");
}
});