【发布时间】:2018-10-11 06:41:53
【问题描述】:
在 javascript 中,一个用于执行回调或为异步函数返回 Promise... 我只是想知道,这如何与回调或承诺中的参数一起工作,我的意思是人们经常看到这样的事情:
function (error, response, body) {..}
这里定义了回调参数的顺序吗?或者说:javascript是否以某种方式“知道”什么是“错误”参数以及其他什么? javascript中是否有保留关键字,例如“error | err | e”等?
例如,我在这里看到了这段代码:
const bcrypt = require('bcrypt');
const password = 'Top Secret';
bcrypt.hash(password, 10, (err, hash) => {
if (err) {
throw err;
}
console.log('Your hash: ', hash);
});
其中“err”是第一个参数,数据是第二个,但是:
bcrypt.hash(password, 10).then(
hash => {
console.log('Your hash: ', hash);
},
err => {
console.log(err);
}
);
显然 hash 是 promise 中的第一个参数,而 err 是第二个参数,所以我的问题是:javascript 通常如何知道错误和其他参数是什么?有相关的文档或指南吗?
【问题讨论】:
-
没有。回调是正常的函数。函数接收哪些参数以及以何种顺序由函数的调用者确定。但是,Node.js 确实有将错误对象作为第一个参数传递的约定。
-
.then()的签名是.then(successFn, errorFn)。在上面的最后一个例子中,hash和err都是它们各自函数的第一个参数。您可以使用任何您喜欢的成员名称,例如donald_duck和miss_marple(但请不要)
标签: javascript error-handling callback promise