Sus*_*ant 1 javascript asynchronous callback
我试图第一次理解回调.在我看到的所有示例中,回调总是作为参数传递.这是一个常见的例子:
let result = 0;
function add(num1, num2, callback) {
setTimeout(() => {
result = num1 + num2;
callback();
}, 2000);
}
function logResult() {
console.log(result);
}
add(4, 5, logResult); // here's the callback passed as argument
Run Code Online (Sandbox Code Playgroud)
使用以下代码可以获得相同的结果.并且它不需要将回调作为参数传递.
let result = 0;
function add(num1, num2) {
setTimeout(() => {
result = num1 + num2;
logResult();
}, 2000);
}
function logResult() {
console.log(result);
}
add(4, 5);
Run Code Online (Sandbox Code Playgroud)
它只是为了可读性和理解代码更好,它们作为参数传递?还是有什么我想念的?请有人赐教我吗?
您的示例中根本不需要回调,您可以这样做:
function add(num1, num2) {
setTimeout(() => { // thats a callback too, just saying ...
const result = num1 + num2; // don't leak variables, declare them!
console.log(result);
}, 2000);
}
Run Code Online (Sandbox Code Playgroud)
然而,编程就是创建可重用的代码,然后可以将其组合成更复杂的程序.因此,您不希望限制add记录结果的用法,而是如果您接受回调,则可以使用它来实现各种任务:
add(1, 2, (result) => {
add(result, 5, (result2) => {
alert(result2);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |