обещание резолюции в императивном вызове APEX - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть LWCA, которая вызывает метод в LWCB (служба LW C), который делает обязательный вызов метода 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;
            });
},

Консоль: Сервис lw c lwcA: не определено lwcB: действительный

Я ожидал (возможно, неверно), что результат lwcB будет разрешен до возврата значения вызывающему fn (lwcA). Можете ли вы помочь мне лучше понять, почему это работает не так, как ожидалось, и как я могу настроить этот код для возврата выполненного обещания вызывающей стороне?

1 Ответ

0 голосов
/ 21 февраля 2020

Вам необходимо экспортировать функцию callApexMethod из LWCB и вернуть другую функцию / обещание, которое возвращает значение преобразователя обещаний - чем this.apexCallResult в LWCA должен быть равным результатом из обещания. Вам нужно только внести некоторые изменения в 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 }
...