1

我现在遇到了一段时间的小问题:需要在状态中存储一个随机数,这将持续存在于所有参与者中。

alert(delta[random]); 

返回值,因此到目前为止一切正常,但这就是神秘开始的地方:

我已经试过了

$.each(gapi.hangout.data.getKeys(),function(i,o){
alert(o);
});

但它永远不会进入循环。但是,如果我放置

alert('dfsdasd');

在 submitDelta 之后它可以工作。最后两行

    alert(gapi.hangout.data.getValue(random));
    $("#randomNumber").val(gapi.hangout.data.getValue(random));

已经死了,没有“未定义”或[对象]的警报。

function setRandom()
    {
        var rand = Math.floor(Math.random()*100);
        var random = "randomNumber";
        var delta = {};
        delta[random] = JSON.stringify(rand);
        alert(delta[random]);

        gapi.hangout.data.submitDelta(delta);

        alert(gapi.hangout.data.getValue(random));
        $("#randomNumber").val(gapi.hangout.data.getValue(random));
    }

我已经包含了两个库 src="//talkgadget.google.com/hangouts/_/api/hangout.js?v=1.1" 和 src="http://code.jquery.com/jquery-1.7.2。 js"

onStateChanged 上没有处理程序

我在这里做错了什么?每当我触摸 gapi.hangouts.data 时,它都会失败。

4

1 回答 1

1

我看到这里有两个问题。

第一个是submitDelta被定义为采用两个参数,而您只提供一个。

另一个问题是 submitDelta() 是异步的,因此您不应期望 getValue() 或 getState() 在调用后立即工作。在这种情况下处理事情的最佳方法是使用 onStateChanged.add() 注册 StateChangedEvent。

因此,例如,您可能会执行以下操作:

function init(){
    gapi.hangout.data.onStateChanged.add( handleChange );
    submitRandom();
}

function handleChange( stateChangedEvent ){
    var random = "randomNumber";
    var val = gapi.hangout.data.getValue(random);
    alert(val);
    $("#randomNumber").val(val);
}

function submitRandom(){
    var rand = Math.floor(Math.random()*100);
    var random = "randomNumber";
    var delta = {};
    delta[random] = JSON.stringify(rand);
    alert(delta[random]);

    gapi.hangout.data.submitDelta(delta, []);
}
于 2012-07-08T14:34:33.410 回答