sha*_*aun 1 javascript callback node.js
我想这可能实际上回答了我在Stack Overflow上的另一个问题,如果我可以得到确认的话.
返回回调和调用回调之间有什么区别?
我已经看到代码正在执行/或/两者并试图绕过为什么以及何时执行哪些操作.
function test(x, y, callback){
return callback(null, x);
callback(null, x + y);
}
test(1, 2, function(err, results){
if(!err){
console.log('results:\n', results);
} else {
console.error('err:\n', err);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:我认为我的部分问题解决了我的链接问题,我会不断收到错误,已经调用了回调.
我试图理解这两种不同方式之间的概念差异在我的脑海里做同样的事情.当我问一个问题以更好地理解我还没有掌握的概念时,不知道为什么我会被拒绝.我们是不是都在通过提出比我们更好的程序员的问题来扩展我们的编程知识?
return callback();
//some more lines of code;
Run Code Online (Sandbox Code Playgroud)
评论部分不会在上面执行,但会在下面
callback();
//some more lines of code;
Run Code Online (Sandbox Code Playgroud)
编辑:
当然返回将有助于上下文调用异步函数获取回调返回的值,但通常不会调用异步函数来分配任何内容.
此外,您通常使用if块来使用此技巧,如下所示:
asyncFunction (params, callback) {
if(err) callback(err, null);
callback(err, result);
}
Run Code Online (Sandbox Code Playgroud)
为避免回调被调用两次,你可以这样做:
asyncFunction (params, callback) {
if(err) return callback(err, null);
callback(err, result);
}
Run Code Online (Sandbox Code Playgroud)
所以
function test(x, y, callback){
return callback(null, x);
callback(null, x + y); // never executed
}
// 1st example:
test(1, 2, function(err, results) {
if (!err) {
console.log('results:\n', results);
} else {
console.error('err:\n', err);
}
});
test(3, 4, function() {
console.log("done")
}); // will alert done`
// 2nd example:
console.log(test(5, 6, function() {
return "done";
// whatever here will not execute
})); // will alert done`Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3294 次 |
| 最近记录: |