0

我有 LWCA,它调用 LWCB(服务 LWC)中的一个方法,该方法对 APEX 方法进行命令式调用。问题是promise没有像预期的那样表现。

低碳合金

      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:有效

我预计(可能是错误的)在将值返回给调用 fn (lwcA) 之前会解决导致 lwcB 的问题。您能否帮助我更好地理解为什么这不能按预期工作以及如何调整此代码以向调用者返回已履行的承诺?

4

1 回答 1

0

您需要从 LWCB 导出 callApexMethod 函数并返回另一个函数/promise,该函数/promise 返回 promise 解析器的值 - 而 LWCA 中的 this.apexCallResult 应该与 promise 的结果相同。您只需要对 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 }
于 2020-02-20T22:26:47.973 回答