0

私がそのようなコードを持っていたら、それを単純化しましょう。

someObj.newVal = returnSomVal();

function returnSomVal(){
    return grabproperVal();
}

function grabproperVal(){
    var someVal;
    //some js figuring to get proper value for somVal;
    return someVal
    someObj.newVal = setSomeCookie(someObj.newVal,'cookiename');
}

これが発生する競合状態が存在する可能性があります。

someObj.newVal = setSomeCookie(someObj.newVal,'cookiename');

この割り当てが発生する前に:

someObj.newVal = returnSomVal(); 

私は「時々」変数を見逃していますが、それが私のテスト方法なのか、それとも競合状態が「発生している」のかわかりません。物事を絞り込もうとしているだけです。

4

1 に答える 1

0

これらの関数がどのように動作するかを知る必要があります。関数の1つ(または両方)が非同期であるため、あなたが言っている動作は発生しているようです。最初に実行する必要がある関数でコールバックを使用する必要があります。非同期タスクが終了したら、2 つ目のタスクを実行します。

于 2012-07-22T06:57:00.510 に答える