setTimeout在JS中打破流量?

时间:2014-02-03 13:36:07

标签: javascript comparison equals

有人可以向我解释为什么这不起作用,我的Javascript中的流程似乎已被打破......

总是会发生这种情况:" otherFunction"的最后一个if语句总是评估为真,但似乎因为我在那里超时,所以回报永远不会发生。

我是否需要通过首先将匿名timeOut-function中的true返回到我的" otherFunction"来传递回传。然后又从那个到被调用者?不知道怎么做......

myObj.ready = function() {
    var self = this;

    var readyFlag = self.otherFunction();

    if (readyFlag == true) {
        $("#slide1").remove();
    }
    else {
        //If not fully transitioned in yet, postpone 1,5s
        setTimeout(function(){
            self.ready();
        },1500);

        return false; //end execution here, wait for timeout to pick it back up
    }
}

myObj.otherFunction = function() {
    //check twice (with a couple of milliseconds inbetwwen) and get the same value, transition must be finished...
    var check1 = $("#slide").css('-webkit-transform');

    setTimeout(function(){
        console.error('check1: '+check1); //print: none

        var check2 = $("#slide1").css('-webkit-transform');
        console.error('check2: '+check2); //print: none

        if (check1 == check2) {
            console.error('transition IS ready...');
            return true;
        }
        else {
            console.error('transition NOT ready...');
            console.error('check2: '+check2);
            return false;
        }

    },30);
}

1 个答案:

答案 0 :(得分:1)

您无法将“超时”功能中的数据返回到otherFunction。如果我理解你想要的东西,你似乎运气不好。