1 2 /* 3 * Copyright (C) Nginx, Inc. 4 */ 5 6 #ifndef _NJS_PROMISE_H_INCLUDED_ 7 #define _NJS_PROMISE_H_INCLUDED_ 8 9 10 typedef enum { 11 NJS_PROMISE_PENDING = 0, 12 NJS_PROMISE_FULFILL, 13 NJS_PROMISE_REJECTED 14 } njs_promise_type_t; 15 16 typedef struct { 17 njs_value_t promise; 18 njs_value_t resolve; 19 njs_value_t reject; 20 } njs_promise_capability_t; 21 22 typedef struct { 23 njs_promise_type_t state; 24 njs_value_t result; 25 njs_queue_t fulfill_queue; 26 njs_queue_t reject_queue; 27 njs_bool_t is_handled; 28 } njs_promise_data_t; 29 30 31 njs_int_t njs_promise_constructor(njs_vm_t *vm, njs_value_t *args, 32 njs_uint_t nargs, njs_index_t unused); 33 njs_promise_capability_t *njs_promise_new_capability(njs_vm_t *vm, 34 njs_value_t *constructor); 35 njs_function_t *njs_promise_create_function(njs_vm_t *vm, size_t context_size); 36 njs_int_t njs_promise_perform_then(njs_vm_t *vm, njs_value_t *value, 37 njs_value_t *fulfilled, njs_value_t *rejected, 38 njs_promise_capability_t *capability); 39 njs_promise_t *njs_promise_resolve(njs_vm_t *vm, njs_value_t *constructor, 40 njs_value_t *x); 41 42 43 extern const njs_object_type_init_t njs_promise_type_init; 44 45 46 #endif /* _NJS_PROMISE_H_INCLUDED_ */ 47