我开始学习 javascript,并且有一个关于组合同步和异步调用函数的问题。这只是一个理论问题,但我希望它能传达这个想法。
假设我们有一个 javascript 程序来决定我需要购买多少香蕉和橙子。
console.log('buy %d bananas and %d oranges', bananas, oranges)
现在,我可以决定买多少香蕉,但我需要问我的妻子她想要多少橙子,所以我给她发短信。 (我可以编写一个异步函数来表示这一点)。
这将是我的直接方法:
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){ oranges = number; }
console.log('buy %d bananas and %d oranges', bananas, oranges)
但对我来说这没有意义,因为我必须等待我妻子的回复,所以我可能无法及时得到橙子的数量。
所以我可以将我的程序更改为:
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){
oranges = number;
console.log('buy %d bananas and %d oranges', bananas, oranges);
}
但我不喜欢这样,因为现在我有逻辑决定买什么,包括香蕉,在我妻子的回应中。如果我决定不想要橙子怎么办,我必须这样做吗:
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);
所以我的问题是,任何人都可以向我解释做这样的事情的最佳/正确方法是什么吗?