Javascript 回调返回值有意义吗?
通常,js中的异步函数会返回包含解析值或错误消息的承诺。如果不应用承诺样式,则可以将回调作为参数传递给该异步函数,在该函数中可以访问异步函数的结果Javascript 回调返回值有意义吗?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,通常,js中的异步函数会返回包含解析值或错误消息的承诺。如果不应用承诺样式,则可以将回调作为参数传递给该异步函数,在该函数中可以访问异步函数的结果 只是想知道这样一个回调使用return语句是否有意义?如果是这样的话,谁可以接收返回值?是否有任何有用的用例?下面是一段代码来说明您试图理解的概念 var callback = function(err, result){ if(err){ console.log(err); return err; }
只是想知道这样一个回调使用return语句是否有意义?如果是这样的话,谁可以接收返回值?是否有任何有用的用例?下面是一段代码来说明您试图理解的概念
var callback = function(err, result){
if(err){
console.log(err);
return err;
}
callAnotherFunction(result);
};
function getRandom(cb){
//do something
var result = Math.random();
if(result > 0.5){
return cb(result);
}
return cb(null, result);
}
getRandom(callback);
如果随机数小于0.5,函数
getRandom()
将返回一个错误,否则返回一个值。然后,回调函数根据传递给回调函数的值以不同的方式处理响应。正如您所看到的,回调中的return
语句起到了很大的作用。顺便说一句,上面的示例演示了NodeJS中的一个标准。理论上,任何异步函数都应该返回类似于处理程序的内容,您可以使用它来跟踪进度,或者取消正在进行的异步操作,例如:
var timer = setTimeout(..)
clearTimeout(timer)
因为返回值是以同步方式获取此处理程序的唯一机会,但人们似乎并不十分关心这个问题,并发明了各种各样的东西来解决异步取消问题,请阅读更多关于此的内容
在理想的情况下,我们应该为每个异步函数提供一个处理程序:
handler = fs.readFile('...', function(err, data){...});
xhr = ajax('...', function(err, data){...});
...
像这样的?这真的没有道理。。。。这是一段丑陋的代码,它让我的思维扭曲了.console.log(“结果是”,add(5,4,function(result){return result;})),//结果是undefinedresult,返回给add方法。add方法应该是console.logging。将return添加到回调时,它将返回到调用它的位置。没有人从回调接收返回值。
返回的唯一效果,无论是否有值,都是从函数返回。@torazaburo,“唯一的效果”不是真的,如上所述,调用函数可能需要回调的返回值。尽管如此,回调几乎不可能是异步的。非常感谢,非常好的一点!只是看起来大于0.5而不是小于啊!
的诅咒。抢手货