Node.js meteor.js光纤和循环

时间:2013-09-04 11:42:48

标签: javascript node.js meteor fibers

好的我正在学习光纤而且我不知道如何实现“等待光纤内循环结束”

现在我有了这个代码,没有问题。

        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);
        }
    }); 

重点是首先要检查我是否已经拥有项目(自己的项目是真的)然后我可以做任何我想做的事情,但我需要确保ownItem是真的

2 个答案:

答案 0 :(得分:0)

听起来好像是从桌面编程中的光纤/线程的一些记忆开始,并尝试映射精确的等价。我记得这个世界。不要那么想。纤维更多的是不等待随时可能出现的答案。

我敢打赌,如果你采取更小的步骤,少花点思考,只是得到一些HTML / js来做你想做的事情,然后当你遇到停止障碍时回到这里,你就会取得进步。

例如,项目的所有权通常由文档中的字段ownerid表示,匹配当前用户ID

答案 1 :(得分:0)

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

此代码应该同步。