const helloWorldPromise = new Promise(function(resolve, reject){
setTimeout(() => console.log('Hello World', 1000);
});
console.log('Wait for my first promise!');
FUNCTION ZHELLO_WORLD.
WAIT UP TO 1 SECONDS.
WRITE 'Hello World'. NEW-LINE.
ENDFUNCTION.
CALL FUNCTION 'ZHELLO_WORLD'
STARTING NEW TASK 'task_1'.
WRITE 'Waiting for my first asynchronous function'.
const fulFilledPromise = new Promise(function(resolve, reject){
setTimeout(() => resolve({message: 'task successful', type: 'S'}), 1000);
}).then(function(result){
console.log(result);
});
const rejectedPromise = new Promise(function(resolve, reject){
setTimeout(() => reject(new Error('validation error')), 2000);
}).catch(function(reason){
console.log(reason);
});
fulFilledPromise
logs the object '{message: 'task successful', type: 'S'}', which was passed to the resolve
-function. The callback for the rejectedPromise
logs a error, which was passed to the reject
-function.PERFORMING subroutine ON END OF TASK
or the addition CALLING method ON END OF TASK
to the asynchronous RFC. fulFilledPromise
in the example above.
FUNCTION 'ZASYNC_TASK'
* EXPORTING
* VALUE(RETURN) TYPE BAPIRET2.
WAIT UP TO 1 SECONDS.
return = VALUE #( message = 'task successful' type = 'S' ).
ENDFUNCTION.
FORM callback USING task TYPE clike.
DATA result TYPE bapiret2.
RECEIVE RESULTS FROM FUNCTION 'ZASYNC_TASK'
IMPORTING return = result.
MESSAGE result-message TYPE result-type.
ENDFORM.
CALL FUNCTION 'ZASYNC_TASK'
STARTING NEW TASK 'task_1'
PERFORMING callback ON END OF TASK.
RECEIVE
-statement.rejectedPromise
in the example above.
FUNCTION 'ZFAILING_TASK'.
* EXCEPTIONS
* validation_failure
WAIT UP TO 2 SECONDS.
RAISE validation_failure.
ENDFUNCTION.
FORM callback USING task TYPE clike.
DATA: error_message(100).
RECEIVE RESULTS FROM FUNCTION 'ZFAILING_TASK'
EXCEPTIONS
validation_failure = 4
system_failure = 5 MESSAGE error_message.
communication_failure = 6 MESSAGE error_message.
CASE sy-subrc.
WHEN 4.
WRITE: 'Application raises validation_failure'. NEW-LINE.
WHEN 5.
WRITE: 'System failure: Check transaction ST22', error_message. NEW-LINE.
WHEN 6.
WRITE: 'Communication failure: Maybe they aren't enough free work-processes on your machine', error_message. NEW-LINE.
ENDCASE.
ENDFORM.
CALL FUNCTION 'ZFAILING_TASK'
STARTING NEW TASK 'task_1'
PERFORMING callback ON END OF TASK.
async
.
async function myFirstAsyncFunction(){
await fulFilledPromise;
}
fulFilledPromise
is reached.
(async () => {
await myFirstAsyncFunction();
console.log('Program end')
)();
async function wrapRejection(){
await rejectedPromise;
}
(async () => {
try{
await wrapRejection();
}catch(error){
console.log(error);
}
console.log('Program end');
});
reject
-function is catched like an error thrown in a synchronous function.You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
8 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 |