0
ファイバーにネストされた関数呼び出しのカスケードとほとんど同じ2つのsciptがあります。 3回の呼び出しで(blockchainに送信を解析する)エラー:wait.forはファイバー内でのみ呼び出すことができます
この1つは完全に動作し
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;
}
繊維の内部で呼び出すことができます私は問題が何であるか理解していない。これらの2つのスクリプトは同じ構造をしています!私はmap
またはfilter
ような配列の機能のためにあなたがwait.parallel extensionsを使用する必要があると思う
私がここで何かを忘れていない限り、2番目のスクリプトでファイバーを起動していないだけです( 'wait.launchFiber')。 – d0gb3r7
あなたが正しいです、私は繊維のlauchingを含むことを忘れていたので、コードは次のようになります:wait.launchFiber(watchMempool); function watchMempool(){web3.eth.filter(...)} 私は質問にチャンドを作った。 :-) – jfjobidon
スクリプトがファイバーワークスペースを離れるフィルターを呼び出すと思われる... – jfjobidon