我非常熟悉在JavaScript中使用回调来在异步环境中序列化逻辑。与在C#中使用async/await
相比(我相信这是来自JavaScript),您可以在其中执行以下操作:
var y = await doAsynchronousNetWorkRequest();
return y;
我发现promises在处理异步代码和回调时几乎没有什么改进。
使用基于回调的代码,异步事件发生在回调中后发生的任何逻辑:
(function() {
var x = 5;
makeAsyncRequest(function() {
// then do something
});
return x;
})();
在x
组件执行之前将返回 then do something
。同样承诺:
(function() {
var x = 5;
makeAsyncRequest()
.then(function() {
// then do something
})
return x;
})();
在x
组件执行之前, then do something
仍将返回。关于创建自己的库,除了不必包含一个回调参数然后在某个时刻执行(即它......稍微......更清楚,只返回一个承诺),我可以看出,基于回调和基于承诺的异步代码之间没有功能差异,async/await
实际上有所作为。 (并且'飞行v'并没有出现在代码库中,但这并不重要。)
使用promises和基于回调的异步代码是否有任何好处并不是很明显?