Tho*_*ggi 7 javascript asynchronous callback
只是通过看到我现在写的东西,我可以看到一个更小,所以在代码 方面,高尔夫Option 2是更好的选择,但就哪个更清洁,我更喜欢Option 1.我真的很喜欢社区对此的意见.
选项1
something_async({
success: function(data) {
console.log(data);
},
error: function(error) {
console.log(error);
}
});
Run Code Online (Sandbox Code Playgroud)
选项2
something_async(function(error,data){
if(error){
console.log(error);
}else{
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
它们并不完全相同.选项2仍将记录(数据),而选项1仅记录成功数据.(编辑:在更改代码之前至少就是这样)
也就是说,选项1更具可读性.编程不是/不应该是一个竞争,看谁能写出做最多事情的最少的线.我的目标应始终是创建可维护的,可扩展的(如果必要的)代码 - 以我的拙见.
许多人会发现选项#1更容易阅读和维护——两个不同的回调函数用于两个不同的目的。所有Promise 库都普遍使用它,其中将传递两个参数。当然,问题Multiple argument vs. options object与此无关(虽然该对象在 中很有用jQuery.ajax,但对于 来说没有意义promise.then)。
然而,option#2 是Node.js 约定(另请参阅NodeGuide),并在许多受其影响的库中使用,例如著名的async.js。然而,这个约定是可以讨论的,我发现的最热门的谷歌结果是WekeRoad:NodeJS回调约定和Stackoverflow:Node.js库的建议回调样式是什么?。
单个回调函数带有错误参数的原因是它总是提醒开发人员处理错误,这在服务器端应用程序中尤其重要。许多客户端 ajax 函数的初学者并不关心错误处理,例如,问自己为什么成功回调没有被调用。另一方面,带有then-chaining 的承诺基于错误回调的可选性,将它们传播到下一个级别 - 当然它仍然需要在那里捕获。
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |