0

さて、私はファイバーを学んでいますが、「ファイバー内のループの終わりを待つ」を実装する方法がわかりません

今、私は問題なく動作するこのコードを持っています。

        if (Meteor.isServer) {

        function checkIfIOwnThisItem(callback) {
           setTimeout(function() {
                callback("this callback");
            }, 500);
        }           

        var f = Fiber(function() {
            var fiber = Fiber.current;

            checkIfIOwnThisItem(function(str) {
                fiber.run(str);
            });

            str = Fiber.yield();
            console.log(str);
        });

        f.run();

    }

そして、setTimeoutを置き換える必要があります... FOR ...

        _.each(myBank.items,function(loopItem,key,list){
        if (loopItem.itemId == item.itemId) {
            ownItem = true;
            countOfOwnItemInBank = parseInt(loopItem.number);
        }
    }); 

全体のポイントは、最初に私がすでにアイテムを所有しているかどうかを確認することです(所有アイテムがtrueです)そして、私はやりたいことは何でもできますが、ownItemがtrueであることを確認する必要があります

4

2 に答える 2

0

デスクトッププログラミングのファイバー/スレッドに関するいくつかの記憶から始めて、正確な等価物をマッピングしようとしているようです。あの世界を思い出す。そのように考えないでください。繊維は、いつでも来る可能性のある答えを待っていないということです。

小さなステップを踏み、考えることを減らし、HTML/js を使ってやりたいことができるようにすれば、停止ブロックにぶつかったときにここに戻ってきて、進歩を遂げることができるでしょう。

たとえば、アイテムの所有権は通常、現在のユーザー ID と一致するドキュメントのフィールド ownerid によって表されます。

于 2013-09-04T20:32:01.720 に答える
0
Fiber(function() {
  _.each(myBank.items,function(loopItem,key,list){
    if (loopItem.itemId == item.itemId) {
        ownItem = true;
        countOfOwnItemInBank = parseInt(loopItem.number);
    }
  }); 
}).run();

このコードは同期的に動作するはずです。

于 2013-09-05T14:48:42.540 に答える