代码:https ://github.com/t348575/blockchain-api-testing/tree/master
使用 genesis() 添加块。一个线程监视工作队列,并发送要计算的块并将其添加到链中。需要保留订单,这就是我有排队系统的原因。AsyncWorker 中的 Queue() 会处理这个问题吗?如果我的排队系统被删除,这个例子就可以工作。BlockChainWrapper
拥有所有功能,并继承自ObjectWrap
. 当要执行队列中的一个项目时,AsyncBlockChainWrapper
使用 ,它实现PromiseWorker
了 ,它执行一些块链工作并返回一个字符串到block_as_json_string
,在此之后需要解决承诺。运行BlockchChainAPI.js
会引发 V8 错误,而test.js
根本没有输出。到底是怎么回事?我是 node-addon-api 的相对论新手。关于如何进行的任何建议?
存储 Napi::Env 和对象供以后使用(blockchainWrapper.cpp)
Napi::Value BlockChainWrapper::genesis(const Napi::CallbackInfo& info) {
Napi::Object input_obj = info[0].As<Napi::Object>();
std::lock_guard<std::mutex> guard_ready_queue(ready_queue_mutex);
this->ready_queue_data.push_back(input_obj);
this->ready_queue_func.push_back(BlockChainWrapperTypes::_genesis_ready);
this->ready_queue_env.push_back(info.Env());
Napi::Promise::Deferred deferred = Napi::Promise::Deferred::New(info.Env());
return deferred.Promise();
}
向量(blockchainWrapper.h):
std::vector<Napi::Env> ready_queue_env;
std::vector<Napi::Object> ready_queue_data;
每 200 毫秒扫描一次工作队列,并调用 AsyncFunctions(AsyncWorker 类)。