2016-08-08 45 views
-1

與其等待5秒我使用的setTimeout似乎要馬上執行:的setTimeout發射功能直線距離,而不是等待

window.setTimout(getNegativeErrs(errors), 5000); 

    function getNegativeErrs(ers) { 
    for(i in errors) { 
     var errobj = getByValue(dataLayer, errors[i]); 
     if(!errobj) { 
     dataLayer.push({ 
      'event': 'negative_errors', 
      'unseen': errors[i], 
      'module': 'registration' 
     }) 
     } 
    } 
    } 

必須在函數傳遞是一個特定的格式?我真的不知道該在哪裏編輯或從哪裏開始尋找?

+2

你做錯了。寫一個函數表達式作爲你在其中調用目標函數(使用它的參數)的第一個參數。 'setTimeout(function(){foo(bar)},5000);' – deostroll

回答

2

您的函數getNegativeErrs()正在立即執行,並將其返回值用作回調。

正確的做法:

window.setTimeout(function() { 
    getNegativeErrs(errors) 
    }, 5000); 

    function getNegativeErrs(ers) { 
    for(i in errors) { 
     var errobj = getByValue(dataLayer, errors[i]); 
     if(!errobj) { 
     dataLayer.push({ 
      'event': 'negative_errors', 
      'unseen': errors[i], 
      'module': 'registration' 
     }) 
     } 
    } 
    } 
+0

感謝您的回答。現在我得到一個錯誤window.setTimout不是一個函數? –

+0

檢查是否有拼寫錯誤,或者只是將它設置爲'setTimeout()'。 –

+0

是的,現在是一個錯字,現在非常感謝你 –