解析云代码试图在云代码中调用函数,但是在云代码响应中未返回被调用的函数响应

问题描述 投票:0回答:1

我有一个云代码,可以从中调用一个外部函数。云代码响应为空,但控制台显示响应

我的云代码;

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

如何获得外部函数响应作为我的云代码函数的响应?

asynchronous parse-platform parse-cloud
1个回答
0
投票

问题是您的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");  
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.