Пожалуйста, ознакомьтесь с моей реализации простого, когда/тогда (псевдо обещаю) в JavaScript


Я надеюсь, что некоторые люди могут занять несколько минут, чтобы пересмотреть какой-то код, что я работаю на сегодня.

https://gist.github.com/1115202

По сути, я делаю много работы в Node.js на данный момент, и я большой поклонник обещает.

Так как 99% работы, которую я делаю включает в себя проведение нескольких асинхронных действия и затем анализируя результаты, я хотел что-то немного проще и более легкий, что некоторые другие обещание/отсроченные/фьючерсы библиотеки, которые находятся там.

Моя цель с этим, чтобы иметь простой, когда().затем (формат) без того, чтобы создать новое обещание в каждой функции.

Использование такой:

when(
    function(){ this.pass(1); }, 
    function(){ this.pass(2); }
)
.then(function(results){ 
    console.log( results ); 
});

В программе GiST на GitHub я ссылался выше, есть случаи, используйте вблизи дна. Тест 1 использует тайм-ауты, 2-й тест использует несколько асинхронных HTTP-запросов в Node.js и журналы итоговые результаты в конце, когда все 3 закончили.

Я хотел бы услышать любые мнения хорошо или плохо, рекомендации, как сделать его лучше, и т. д.



326
1
задан 30 июля 2011 в 05:07 Источник Поделиться
Комментарии
1 ответ

Я сделал следующие изменения:


  1. Допустить же , когда функция от призыва пройти два раза(поэтому отмене итогов)

  2. Посылает передать функции 1-го аргумента, чтобы избежать , что ВАР = это

  3. Он хранит первый передать параметр только для простоты вместо всех аргументов в результаты(легко переключается)

  4. Тогда функция не может быть вызван более одного

  5. Я устранил необходимость в когда и когда функции(можно оставить отдельные функции для ясности, если вы хотели)

  6. Сейчас существует только один метод , то и опора нам библиотеки и функции

https://gist.github.com/1115319

Использование

when(
function(pass){setTimeout(pass,3000)},
function(pass){pass('2nd');}
)
.then(function(results){
console.log(results);
})

2
ответ дан 30 июля 2011 в 08:07 Источник Поделиться