Wpis z mikrobloga

@wytrzzeszcz: pomyśl o Promise jak o remedium na callback-in-callback. Pacz:

function promiseA(duration){
return new Promise(function(resolve, reject){
setTimeout(resolve.bind(null, true), duration);
});
}
function promiseB(text){
return new Promise(function(resolve, reject){
console.log(text);
resolve(true);
});
}
promiseA(1000)
.then(promiseB.bind(null, 'hello'))
.then(promiseA.bind(null, 500))
.then(promiseB.bind(null, 'world'));
@wytrzzeszcz: nadaje się to na chainowanie wykonywania zbioru asynchronicznych funkcji w kolejności jaką ustalisz z przekazywaniem wyniku aktualnie wykonanej do następnej w kolejce. przetwarzanie tekstu/danych można na tym zrobić na przykład.
@PsichiX:

W #csharpTaski oraz async / await, które doskonale się do tego nadają i mają całkiem przyjemną składnię.

W #cpp jest std::promise i std::future, które, afaik, też pozwalają realizować ten pattern. Nie wiem, jak ze składnią "na co dzień";

W #ruby jest do tego gem z przyjemną składnia.

Pobieżne przeglądnięcie google mówi, że python ma składniowe wsparcie dla obietnic. Gdy odkryłem promises, zafascynowały mnie na
@PsichiX: to prawda, chociaż czasem pozwala na jakiś fajny myk. Swoją drogą zachodzę w głowę, dlaczego nie powstał jeszcze język, który byłby takim coffee scriptem dla c++.
Nic tak życia nie ułatwia jak ten ociekający miodem ficzur ()


@PsichiX: To ciekawe czemu w następny wersjach języka dodano generatory a w przyszłości zostaną dodane funkcje async.

@PsichiX: Kuleje niestety, bo życzysz innym językom tego wspaniałego ficzera, który tylko rozwiązuje problem nieznany w socjaliźmie .. tfu .. w innych językach (oczywiście nie wszystkich).

Cały problem wziął się z tego, że w JS jest tylko jeden wątek i przez to kod asynchroniczny zamienia się w spaghetti callbacków. Promisy trochę łagodzą ten problem, ale w językach z wątkami w ogóle nie trzeba się tak męczyć. Kod, który np. czeka na
@informatyk15000k: co z tego ze w innych jezykach jest wielowatkowosc. W JS jako takim tez jest ale po co jej uzywac? Jak widze ludzi ktorzy uzywaja wielowatkowosci w sposob nieprawidlowy to mi sie noz w kieszeni otwiera. A ci co potrafia uzyc wielowatkowosci w sposob prawidlowy to i w JS beda potrafili osiagnac to samo.
napisałem tylko, że promisy to sposób na bardziej elegancką obsługę asynchroniczności niż przy pomocy callbacków (CPS).


@informatyk15000k: hmm nie wiem jak mozna bylo stosowac callbacki bez promisow. Jak sam sie uczylem o callbackach to stworzylem sobie sam promisy i z nich korzystalem. Myslalem ze wszyscy tak robia bo nie jest to zaden wynalazek. W JS po prostu sie tak pisze.
@karer: No to chyba nie masz za dużo doświadczenia. Promisy w js są popularne dopiero od paru lat.
Generatory i funkcje async/await to pieśń przyszłości - pozwolą na pisanie kodu, który wygląda na zwykły sekwencyjny.
Żadne z tych mechanizmów nie są nowością, call/cc jest w scheme, a funkcje async/await na przykład w c# i clojure (core.async).
Promisy w js są popularne dopiero od paru lat.


@informatyk15000k: jak dla mnie nie sa popularne nawet dzis. Raczej sa ciekawostka tak samo jak callbacki. A dokladnie jest to proba uzywania JS tak jak innych jezykow.