我有2个scipts几乎相同,嵌套在光纤中的级联函数调用。
这一个(解析区块链中的Tx)有三个调用完美无缺
wait.launchFiber(blockchain)
function blockchain() {
foreach block {
parseBlock (blockIndex)
}
}
function parseBlock(blockIndex) {
foreach Tx in block {
parseTx(txHash)
}
}
function parseTx (txHash) {
if ( txHashInDB(txHash) ) {
do something
}
}
function txHashInDB (txHash) {
var theTx = wait.forMethod(Tx, 'findOne', {'hash': txHash});
return (theTx) ? true : false;
}
然后我必须和mempool做类似的事情。在这种情况下,我没有块,只有事务,所以我只有2个调用,我收到此错误消息:
错误:wait.for只能在光纤内部调用
wait.launchFiber(watchMempool);
function watchMempool() {
web3.eth.filter('pending', function (error, txHash) {
parseTx(txHash);
});
}
function parseTx (txHash) {
if ( txHashInDB(txHash) ) {
do something
}
}
function txHashInDB (txHash) {
var theTx = wait.forMethod(Tx, 'findOne', {'hash': txHash});
return (theTx) ? true : false;
}
我不明白问题是什么。这两个脚本具有相同的结构!
答案 0 :(得分:0)
我认为对于像map
或filter
这样的数组函数,您需要使用wait.parallel extensions,例如在您的情况下:
function watchMempool() {
wait.parallel.filter(web3.eth, parseTx);
}
(注意:我只是假设web3.eth
是一个数组;如果没有,你应该为你的问题添加更多的上下文,或者尝试将问题归结为更通用的例子。) / p>