Javascript 异步函数、承诺和可观察函数之间的区别是什么?
有人能解释一下什么时候使用async和Wait吗 我想在angular应用程序类中编写一个方法,它将等待API调用的响应。改用承诺好吗 如果两者都是异步的,那么何时使用Promise而不是异步函数呢Javascript 异步函数、承诺和可观察函数之间的区别是什么?,javascript,async-await,javascript-objects,Javascript,Async Await,Javascript Objects,有人能解释一下什么时候使用async和Wait吗 我想在angular应用程序类中编写一个方法,它将等待API调用的响应。改用承诺好吗 如果两者都是异步的,那么何时使用Promise而不是异步函数呢 什么是可观测的?它们与承诺有何不同?这个问题有两个分支 什么是异步函数,它们与promise构造函数有何不同,什么是可观察的 何时使用可观察对象以及何时使用承诺/异步函数 我知道这可能需要足够长的时间来填满一个wiki页面,但从实用的角度来看,这是可以回答的,并且可能有助于实际创建实用的信息资源 关
什么是可观测的?它们与承诺有何不同?这个问题有两个分支
const getDataFromFile = (fileName) => new Promise(resolve => {
readFile(fileName, content => resolve(content);
});
您可以使用异步函数从各种RESTAPI请求的值或返回承诺的函数中进行计算和转换
async function concatFiles(fileName1, fileName2) {
const content1 = await getDataFromFile(fileName1);
const content2 = await getDataFromFile(fileName2);
return content1 + content2; // or just `$`
}
您可以使用可观察值来表示随时间变化的值,您可以将这些变化表示为事件,也可以将这些值表示为某个事物的状态。与select类似,它将触发更改并包装一个值
Observable.fromEvent(selectElement, 'change').subscribe(e => console.log(e))
关于第二个分支:使用适合问题的方法
现在,Angular提出了一个架构特性,可能这个架构(或其他框架中的架构)要求您使用可观察的,您必须处理它。但是,如果你可以选择的话,只要把问题简化成合理的部分,就可以使用更适合问题的方法
问题的额外分支或者所有这些结构是如何产生的,为什么
创建承诺、异步函数和可观察对象的原因有很多,所有这些都与反应式编程、异步、程序的非阻塞设计等有关
希望有帮助。这是一个非常广泛的问题,需要太多的解释才能适合堆栈溢出。我建议你查看一些博客并阅读,每个博客都被广泛报道过。你是认真的吗?!一个完整的维基页面可以写下你的要求,请帮自己和我们一个忙,做一些简单的谷歌搜索,然后只问一个更窄的问题question@Isaac,这个问题就是为了这个目的而提出的,这样我就可以得到有效的文章,定义所有提到的术语,并以一种有针对性的方式对它们进行区分。这就是为什么这个问题很狭隘。