Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / javascript Чем заменить SetTimeout? / 11 сообщений из 11, страница 1 из 1
19.01.2014, 17:25
    #38531089
lans
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
С интервалом в пару секунд происходит ряд событий. Использую SetTimeout точнее так
Код: javascript
1.
setTimeout(function () {setTimeout(function () {setTimeout(function () {setTimeout(function () {},2000)},2000)},2000)},2000);



Проблема в том что последнее событие не всегда срабатывает, и вообще сама идея с setTimeout что то мне не нравиться, есть ли другое решение задачи?
Спасибо заранее
...
Рейтинг: 0 / 0
19.01.2014, 18:20
    #38531115
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
setInterval.
Иди уже пирожками торговать.
...
Рейтинг: 0 / 0
19.01.2014, 21:34
    #38531206
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
lans, если у тебя одно и то же действие делается на каждом шаге и интервал всегда одинаковый, то используй setTimeout(). Если действия разные или нужно будет менять интервалы, то можно использовать Deferred из jQuery. По сути там внутри тоже будет sitTimeout() просто с более ясным синтаксисом.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
$(document).ready(function() {
    var defer = $.Deferred();
    defer.then(function() {
        return wait2s();
    })
    .then(function() {
        alert("Step 1");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 2");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 3");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 4");
    })
    ;
    
    defer.resolve();
});

function wait2s() { return wait(2000); }

function wait(ms) {
    var deferred = $.Deferred();
    setTimeout(deferred.resolve, ms);
    
    // We just need to return the promise not the whole deferred.
    return deferred.promise();
}



Пример в действии - http://jsfiddle.net/swpwJ/
...
Рейтинг: 0 / 0
19.01.2014, 21:35
    #38531209
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
ShSergeИди уже пирожками торговать.
Без оскорбления никак нельзя было обойтись?
...
Рейтинг: 0 / 0
20.01.2014, 10:11
    #38531427
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
bazileShSergeИди уже пирожками торговать.
Без оскорбления никак нельзя было обойтись?
Человек уже минимум 7 лет в этом бизнесе. Что здесь ещё сказать?!
...
Рейтинг: 0 / 0
20.01.2014, 12:17
    #38531635
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
ShSergeЧеловек уже минимум 7 лет в этом бизнесе. Что здесь ещё сказать?!
Это не дает повода оскорблять. Можно было просто промолчать.
...
Рейтинг: 0 / 0
20.01.2014, 12:25
    #38531648
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
bazileShSergeЧеловек уже минимум 7 лет в этом бизнесе. Что здесь ещё сказать?!
Это не дает повода оскорблять. Можно было просто промолчать.
Я написал ответ.
...
Рейтинг: 0 / 0
20.01.2014, 17:43
    #38532198
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
ShSergeЯ написал ответ.
Я заметил и поэтому сразу спросил - "Без оскорбления никак нельзя было обойтись?".
...
Рейтинг: 0 / 0
21.01.2014, 22:48
    #38533783
lans
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
ShSergesetInterval.
Иди уже пирожками торговать.

События все разные!
...
Рейтинг: 0 / 0
21.01.2014, 22:49
    #38533784
lans
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
bazilelans, если у тебя одно и то же действие делается на каждом шаге и интервал всегда одинаковый, то используй setTimeout(). Если действия разные или нужно будет менять интервалы, то можно использовать Deferred из jQuery. По сути там внутри тоже будет sitTimeout() просто с более ясным синтаксисом.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
$(document).ready(function() {
    var defer = $.Deferred();
    defer.then(function() {
        return wait2s();
    })
    .then(function() {
        alert("Step 1");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 2");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 3");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 4");
    })
    ;
    
    defer.resolve();
});

function wait2s() { return wait(2000); }

function wait(ms) {
    var deferred = $.Deferred();
    setTimeout(deferred.resolve, ms);
    
    // We just need to return the promise not the whole deferred.
    return deferred.promise();
}



Пример в действии - http://jsfiddle.net/swpwJ/

Спасибо!
...
Рейтинг: 0 / 0
21.01.2014, 22:51
    #38533785
lans
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript Чем заменить SetTimeout?
lansbazilelans, если у тебя одно и то же действие делается на каждом шаге и интервал всегда одинаковый, то используй setTimeout(). Если действия разные или нужно будет менять интервалы, то можно использовать Deferred из jQuery. По сути там внутри тоже будет sitTimeout() просто с более ясным синтаксисом.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
$(document).ready(function() {
    var defer = $.Deferred();
    defer.then(function() {
        return wait2s();
    })
    .then(function() {
        alert("Step 1");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 2");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 3");
    })
    .then(wait2s)
    .then(function() {
        alert("Step 4");
    })
    ;
    
    defer.resolve();
});

function wait2s() { return wait(2000); }

function wait(ms) {
    var deferred = $.Deferred();
    setTimeout(deferred.resolve, ms);
    
    // We just need to return the promise not the whole deferred.
    return deferred.promise();
}



Пример в действии - http://jsfiddle.net/swpwJ/

Спасибо!

То что надо)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / javascript Чем заменить SetTimeout? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]