javascript函数回调,参数(错误,响应,正文)的顺序重要吗?

时间:2018-10-11 06:41:54

标签: javascript error-handling callback promise

在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一般如何知道错误和其他参数是什么?是否有相关的文档或指南?

1 个答案:

答案 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进行两个回调,一个回调用于成功,另一个回调用于错误情况。参数的名称(或是否有任何参数)无关紧要。