Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setTimeout не могу понять поведение (https://javascript.ru/forum/misc/29269-settimeout-ne-mogu-ponyat-povedenie.html)

like2dev 21.06.2012 18:25

setTimeout не могу понять поведение
 
Здравствуйте, есть такой вот код, отрабатывает отлично алерт вызывается черзе 2 секунды:
$(document).ready(function(){
    $('#search').keyup(function() {
        setTimeout(function(){alert('fff')},2000);
    });
});​


http://jsfiddle.net/BR3j2/

И такой:
$(document).ready(function(){
    $('#search').keyup(function(e) {
        setTimeout(function($) {
            alert($.now());
        }(jQuery),2000);
    });
});​


http://jsfiddle.net/VQt7G/

В случае первого скрипта delay применяется, а во втором нет

Deff 21.06.2012 18:47

like2dev,
1. Нет библиотеки jQuery ко второму скрипту,
2. Воть эта запись
setTimeout(function($) {alert($.now());}(jQuery),2000);
абсолютна непонятно, что хотела выразить

vadim5june 21.06.2012 19:15

Цитата:

Сообщение от like2dev (Сообщение 183067)
В случае первого скрипта delay применяется, а во втором нет

во втором случае у Вас идет вызов функции-и он сразу срабатывает без задержки-а должна быть просто функция как в первом случае

like2dev 21.06.2012 19:25

Спасибо разобрался :)


$('#searchstring').keyup(function(e) {
            $('#searchstring').data('time',e.timeStamp);
            var time = e.timeStamp;
            var persik = function (time) {
                var obj = $("#searchstring");
                if(time == obj.data('time')) {
                    console.log('Ajax...');
                    $.ajax({
                        url: '/ajax.php',
                        dataType: 'html',
                        async: false,
                        type: "GET",
                        data: {type: "search_bar",searchstring: obj.val() },
                        success: function(response) {
                            var obj = $('#search_popup');
                            obj.html(response);
                        }
                    });
                }
            };

            setTimeout(function(){persik(time);},500);
    });


Часовой пояс GMT +3, время: 20:11.