调用带有回调的函数后,解析云代码响应为空

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");  
    }
});