命令式 APEX 调用中的承诺解析

promise resolution in imperative APEX call

我有 LWCA 调用 LWCB(服务 LWC)中的方法,该方法对 APEX 方法进行命令式调用。 问题是承诺没有按预期表现。

LWCA

      import serviceLWC from 'c/servicelwc';

    handleButtonClick() {
       this.apexCallResult = serviceLWC.callApexMethod(parm);
       console.log('lwcA:' + this.apexCallResult );
     }

LWCB

import verify from '@salesforce/apexContinuation/util.verify';

 callApexMethod(parm) {
     console.log('Service lwc');
     verify ({ parm })
            .then(result =>  {
                console.log('lwcB: ' + result);
                return result;
            })
            .catch(error => {
                console.log('lwcB: ' + result);
                return error;
            });
},

控制台:
服务 lwc
lwcA:未定义
lwcB: 有效

我预计(可能不正确)导致 lwcB 的结果会在 return 将值传递给调用 fn (lwcA) 之前得到解决。您能否帮助我更好地理解为什么这没有按预期工作以及我如何调整此代码以 return 实现对调用者的承诺?

您需要从 LWCB 和 return 导出另一个 function/promise 的 callApexMethod 函数,其中 return promise 解析器的值 - 比 LWCA 中的 this.apexCallResult 应该相等承诺的结果。您只需要在 LWCB 上进行一些更改:

import verify from '@salesforce/apexContinuation/util.verify';

 export function callApexMethod(parm) {
     console.log('Service lwc');
     return verify ({ parm })
            .then(result =>  {
                console.log('lwcB: ' + result);
                return result;
            })
            .catch(error => {
                console.log('lwcB: ' + result);
                return error;
            });
}

如果你有更多的功能需要在LWCB中导出,你可以使用快捷方式导出

function callApexMethodA() {}

function callApexMethodB() {}

export default { callApexMethodA, callApexMethodB }