Jestem trochę w stanie nauczyć się javascript i mam pytanie dotyczące łączenia połączeń synchronicznych i asynchronicznych z funkcjami. To będzie tylko teoretyczny problem, ale mam nadzieję, że przekazuje ten pomysł.Jak łączyć połączenia asynchroniczne z synchronicznymi w javascript
Załóżmy, że mamy program javascript, który decyduje, ile bananów i pomarańczy muszę kupić.
console.log('buy %d bananas and %d oranges', bananas, oranges)
Teraz mogę zdecydować ile banany można kupić, ale muszę zapytać moją żonę, ile pomarańcze chce, więc jej tekst. (Mogę napisać funkcję asynchroniczną, aby to przedstawić).
Byłby to mój bezpośredni dojazd:
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){ oranges = number; }
console.log('buy %d bananas and %d oranges', bananas, oranges)
Ale dla mnie to nie ma sensu, bo trzeba czekać na moja żona odpowiedzieć, więc prawdopodobnie nie będzie miał liczbę pomarańczy o czasie.
Więc mogę zmienić mój program:
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){
oranges = number;
console.log('buy %d bananas and %d oranges', bananas, oranges);
}
Ale nie podoba mi się to, bo teraz mam logikę podejmowaniu decyzji co do zakupu w tym banany, wewnątrz odpowiedzi od mojej żony. Co jeśli zdecyduję Nie chcę pomarańcze, muszę zrobić coś takiego:
var bananas = 10;
var oranges = 0;
if (wantOranges)
{
textWife('askAboutOranges',function(number){
oranges = number;
console.log('buy %d bananas and %d oranges', bananas, oranges);
}
}
else
console.log('buy %d bananas and %d oranges', bananas, oranges);
Więc moje pytanie brzmi: Czy ktoś może mi wyjaśnić, co jest najlepszym/prawy sposób zrobić coś takiego?
Myślę, że to jest to, co chciałem, po prostu myślałem, że jest coś w macierzystym javascript, aby sobie z tym poradzić. –