递归函数、Promise和Rxjs三种异步获取文件的方法(简单举例,帮助新手理解)
原创这三种方法的简单示例, 帮助理解
// 第一种: 回调函数异步数据采集。
function getCallbackData(callback) {
let username = "abc";
setTimeout(() => {
callback(username);
}, 1000);
}
// 第二种: Promise异步数据采集
function getPromiseData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
let username = "PromiseData";
resolve(username);
}, 3000);
});
}
//第三种: Rxjs, 写法和Promise很像, 但是要比Promise强大一些
// HINT: 这个Rxjs 在第三方库中。Angular该框架已经集成。
function rxjsData() {
return new Observable ((observed) => {
setTimeout(() => {
let username = observable name;
observed.next(username);
}, 2000);
});
}
// 调用回调函数
function main() {
let name = getCallbackData((data) => {
console.log(通过回调函数获得的值为: ${data});
});
console.log(name);
}
// Promise的调用
function main1() {
let name = getPromiseData().then((data) => {
console.log(通过Promise获得的值为: ${data});
});
}
// Rxjs
function main2(){
let name = rxjsData().subscribe(value => console.log(value));
}
main();
main1();
main2();
拓展:
比较一下Rxjs和Promise的区别
一、在Rxjs可以取消中的订阅, 就比如:
let message = this.bookService.getBookData().subscribe(data => console.log(data));
message.unsubscribe();
这样,订阅中的内容将不会被执行。
二、setInterval方法
setInterval方法在Promise只能首次运行, 而在Rxjs它可以在正常循环中执行。
Rxjs订阅的数据处理:
let streamData = this.bookService.getBookdData();
streamData.pipe(
map(value => value * value)
,
filter(value => value % 2 === 0)
}
.subscribe(data => console.log(data));
) 版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
上一篇:分享的好看功能键(分享) 下一篇:Vuetinymce富文本工具整合
itfan123




