cancel
Showing results for 
Search instead for 
Did you mean: 

How to write an Asynchronous action in CAP Node.js App?

0 Kudos

Hi, experts,

We are using emit event to act as asynchronous request for data bulkcreate.

But it turns out synchronous.

Can you help me with it ?

the response 'accepted' was not returned until the emit process 'processBasicInfoEvent' was completely done.

Code snippets:

  srv.on('EmployeeBasicInfoImport', async (request) => {

    return 'accepted';
  });

  srv.after('EmployeeBasicInfoImport', async (data, request) => {
    var batchImportData = request.data;
      srv.emit('processBasicInfoEvent', batchImportData);
  });

  srv.on('processBasicInfoEvent', async (request) => {
    const sfsrv = await cds.connect.to('successfactors');
    var batchImportData = JSON.parse(JSON.stringify(request.data));
    var logID = batchImportData.logID;
    batchImportData = batchImportData.employees;
 
    for (var employee of batchImportData) {
    
      await process(employee, sfsrv);
    }
    processBasicInfologs(logID, batchImportData, 'processBasicInfoEvent');
    return batchImportData;
  });<br>

Accepted Solutions (0)

Answers (1)

Answers (1)

mariusobert
Developer Advocate
Developer Advocate
0 Kudos

I assume it is sync because you use the "await" keyword. Try to return a promise instead.