@@ -336,6 +336,17 @@ inline bool Value::IsFunction() const {
336336 return Type () == napi_function;
337337}
338338
339+ inline bool Value::IsPromise () const {
340+ if (_value == nullptr ) {
341+ return false ;
342+ }
343+
344+ bool result;
345+ napi_status status = napi_is_promise (_env, _value, &result);
346+ NAPI_THROW_IF_FAILED (_env, status, false );
347+ return result;
348+ }
349+
339350inline bool Value::IsBuffer () const {
340351 if (_value == nullptr ) {
341352 return false ;
@@ -1379,6 +1390,36 @@ inline Object Function::New(size_t argc, const napi_value* args) const {
13791390 return Object (_env, result);
13801391}
13811392
1393+ // //////////////////////////////////////////////////////////////////////////////
1394+ // Promise class
1395+ // //////////////////////////////////////////////////////////////////////////////
1396+
1397+ inline Promise::Deferred Promise::Deferred::New (napi_env env) {
1398+ return Promise::Deferred (env);
1399+ }
1400+
1401+ inline Promise::Deferred::Deferred (napi_env env) : _env(env) {
1402+ napi_status status = napi_create_promise (_env, &_deferred, &_promise);
1403+ NAPI_THROW_IF_FAILED (_env, status);
1404+ }
1405+
1406+ inline Promise Promise::Deferred::Promise () const {
1407+ return Napi::Promise (_env, _promise);
1408+ }
1409+
1410+ inline void Promise::Deferred::Resolve (napi_value value) const {
1411+ napi_status status = napi_resolve_deferred (_env, _deferred, value);
1412+ NAPI_THROW_IF_FAILED (_env, status);
1413+ }
1414+
1415+ inline void Promise::Deferred::Reject (napi_value value) const {
1416+ napi_status status = napi_reject_deferred (_env, _deferred, value);
1417+ NAPI_THROW_IF_FAILED (_env, status);
1418+ }
1419+
1420+ inline Promise::Promise (napi_env env, napi_value value) : Object(env, value) {
1421+ }
1422+
13821423// //////////////////////////////////////////////////////////////////////////////
13831424// Buffer<T> class
13841425// //////////////////////////////////////////////////////////////////////////////
0 commit comments