人们从哪里获得cb(),这是一个Node事物还是vanilla事物?
例如:
使用Promises,Generators和其他方法管理Node.js回调地狱
他们使用cb()来猜测回调并在某些情况下返回错误或值或两者,具体取决于回调函数sig是什么?
Jos*_*hua 39
cb在你描述它的上下文中是如何将一个vanilla回调函数传递给一个(通常)异步函数,这是node.js中的一个常见模式(它有时被标记为next,但你可以调用它,bananas如果你愿意的话 - 它是只是一个论点).
通常,第一个参数是一个error对象(通常是假的 - 如果一切都按计划进行),后续参数是某种形式的数据.
例如:
function myAsyncFunction(arg1, arg2, cb) {
// async things
cb(false, { data: 123 });
}
Run Code Online (Sandbox Code Playgroud)
然后使用此功能:
myAsyncFunction(10, 99, function onComplete(error, data) {
if (!error) {
// hooray, everything went as planned
} else {
// disaster - retry / respond with an error etc
}
});
Run Code Online (Sandbox Code Playgroud)
Promise是此设计模式的替代方案,您可以从中返回Promise对象myAsyncFunction
例如:
function myAsyncFunction2(arg1, arg2) {
return new Promise(function resolution(resolve, reject, {
// async things
resolve({ data: 123 });
});
}
Run Code Online (Sandbox Code Playgroud)
然后使用此功能:
myAsyncFunction2(10, 99)
.then(function onSuccess(data) {
// success - send a 200 code etc
})
.catch(function onError(error) {
// oh noes - 500
});
Run Code Online (Sandbox Code Playgroud)
它们基本上是一回事,只是略有不同.Prom 不是特别广泛地以原生形式支持,但如果在构建步骤中通过转换器(我建议使用babel),它们也应该在浏览器中足够可靠地执行.
回调将始终在没有填充/转换的浏览器中工作.
| 归档时间: |
|
| 查看次数: |
28529 次 |
| 最近记录: |