功能上的多重承诺

时间:2014-08-14 12:21:32

标签: javascript angularjs

我有这个套接字,当我收到一条消息时,我检查用户,如果用户不存在: 我添加到array和console.log("嘿,新用户:" + results.get(" name")) 如果已经存在我只是把: console.log('用户已经存在!')

问题是有时我从同一个用户那里收到2条消息太快,当发生这种情况时,Parse用户检查还没有解决,并且用户2次添加用户怎么做承诺等待最后继续消息解决? / p>

socket.onmessage = function(dataObject)
{
    var obj = JSON.parse(dataObject.data);

    user = obj.user;
    var index = getIndexOf($scope.users, user);

    if(index === false)
    {   
        Parse.getUser(user).then(function(results)
        {   
            $scope.addUser(results.id, results.get("name"), results.get("image")).then(function()
            {   
                console.log("Hey new user:" + results.get("name"))
            }); 
        });
    }
    else
    {
        console.log('User Already Exist!')
    }
};

1 个答案:

答案 0 :(得分:1)

同时对getIndexOf的回调内部进行Parse检查。

Parse.getUser(user).then(function(results)
{
    if (getIndexOf($scope.users, results) === false) {
        $scope.addUser(results.id, results.get("name"), results.get("image")).then(function()
        {   
            console.log("Hey new user:" + results.get("name"));
        });
    }
});