回调 - JavaScript 挑战
来源:dev.to
2024-11-14 11:51:39
0浏览
收藏
大家好,今天本人给大家带来文章《回调 - JavaScript 挑战》,文中内容主要涉及到,如果你对文章方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

您可以在 github 仓库中找到这篇文章中的所有代码。
异步编程回调相关的挑战
在特定秒后调用回调
/**
* @param {function} callbackfn
* @param {delay} number
* @return {object}
*/
function invokelater(callbackfn, delay) {
const timerid = settimeout(() => {
callbackfn(null, 'run');
}, delay);
return {
clear: () => cleartimeout(timerid),
}
}
// usage example
const cancel = invokelater((err, data) => {
console.log(data);
cancel.clear();
}, 2000);
压扁重击
/**
* @param {function} fn
* @return {function}
*/
function flattenThunk(fn) {
return function (callbackFn) {
function resolveThunk(err, result) {
if (err) {
callbackFn(err, undefined);
return;
}
if (typeof result === 'function') {
result(resolveThunk);
} else {
callbackFn(undefined, result);
}
}
fn(resolveThunk);
}
}
// Usage example
function fn1(callbackFn) {
setTimeout(() => {
callbackFn(null, 'ok');
}, 10);
}
function fn2(callbackFn) {
setTimeout(() => {
callbackFn(null, fn1);
}, 10);
}
function fn3(callbackFn) {
setTimeout(() => {
callbackFn(null, fn2);
}, 10);
}
flattenThunk(fn3)((err, data) => {
console.log(data); // 'ok'
});
参考
- 回调(计算机编程)- wikipedia.org
- 回调函数 - mdn
- thunk - wikipedia.org
- 54。压平 thunk - bfe.dev
本篇关于《回调 - JavaScript 挑战》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!
版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
美国纽约警车计划配备无人机:用于应急响应、高效打击犯罪
- 上一篇
- 美国纽约警车计划配备无人机:用于应急响应、高效打击犯罪
- 下一篇
- 探索云电脑桌面:未来工作与生活的新方式
查看更多
最新文章
-
- 文章 · 前端 | 1天前 | js语法教程
- JSSet集合使用与去重技巧详解
- 350浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTML5离线缓存清除方法大全
- 462浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTML编码如何避免乱码问题
- 235浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTMLaddress标签使用方法详解
- 309浏览 收藏
-
- 文章 · 前端 | 1天前 |
- 发布订阅模式消息队列原理与实现解析
- 135浏览 收藏

