在javascript中,用于执行回调或为异步函数返回诺言... 我只是想知道,这如何与回调或promise中的参数一起使用,我的意思是经常看到这样的事情:
function (error, response, body) {..}
这里定义了回调参数的顺序吗?或以其他方式说:javascript是否以某种方式“知道”什么是“错误”参数以及其他内容? javascript中是否有保留关键字,例如“错误| 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);
}
);
哈希显然是promise中的第一个参数,而err是第二个参数,所以我的问题是:javascript一般如何知道错误和其他参数是什么?是否有相关的文档或指南?
答案 0 :(得分:3)
这里定义了回调参数的顺序吗?
是的:它在request
函数的文档中给出,因为这就是调用回调的方式。
或以其他方式说:javascript是否以某种方式“知道”什么是“错误”参数以及其他内容? javascript中是否有保留关键字,例如“错误| err | e”等?
不。该语言没有对任何参数名称赋予特殊含义。
“ err”是第一个参数,数据是第二个
那只是(很常见)约定,记录在Why does node prefer error-first callback?,https://docs.nodejitsu.com/articles/errors/what-are-the-error-conventions/或http://nodeguide.com/style.html#callbacks。
显然,哈希是promise中的第一个参数,而err是第二个参数
否,这只是promise then
method进行两个回调,一个回调用于成功,另一个回调用于错误情况。参数的名称(或是否有任何参数)无关紧要。