Я учусь использовать node-addon-api , и теперь я застрял на асинхронном / ожидающем управлении.Я не могу понять, как обрабатывать случай, когда нативная функция получает объект, который имеет асинхронную функцию.
Javascript:
const addon = require('bindings')('addon');
class Foo {
async doAsync() {
...
}
}
const useFoo = () => {
const foo = new Foo();
await addon.doStuff(foo);
}
Native:
#include <napi.h>
using namespace Napi;
Napi::Object doStuff(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
MyObject* foo = Napi::ObjectWrap<MyObject>::Unwrap(info[0].As<Napi::Object>());
// How should I await for this?
foo.doAsync();
...
}
Napi::Object InitAll(Napi::Env env, Napi::Object exports) {
exports.Set(Napi::String::New(env, "doStuff"), Napi::Function::New(env, doStuff));
return exports;
}
NODE_API_MODULE(addon, InitAll)
Моя проблема заключается в том, что я не могу найти никаких документов об этом поведении.Я читал о том, как создать обещание на нативном языке, но не о том, как его использовать при получении от JS.