哪个ESLint规则适用于Promise / Arrow函数缩进?

时间:2017-05-30 20:41:28

标签: javascript eslint

我有以下代码段:

const enclosing = () => {
  const setClaim = (userId, claim) => {
    client
      .setClaim({ userId, claim })
      .then(() => {
          // do something

          return resolve(true);
        }, // eslint complains about this line
        err => reject(err)
      );
  });
};

ESLint抱怨上面标记的行如下:

139:9   error  Expected indentation of 6 spaces but found 8                  indent

哪个indent规则对象选项适用于此处(必须更改),因为我希望缩进按原样保留?

我不想使用eslint-disable-line来抑制ESLint错误,因为这是一个全局(适用于我的所有代码被删除)问题。

2 个答案:

答案 0 :(得分:5)

如果你到达这里寻找Promise Indent答案,就像我一样(见标题)...... ESLint Indent rules的MemberExpression部分可能会有所帮助。成员表达式“强制执行多行属性链的缩进级别”。

您可以通过在"MemberExpression"文件中将"Off"设置为.eslintrc.js来关闭检查链式方法的缩进。

rules: {
  'indent': ['error', 4, { 'MemberExpression': 'off'}]
}

将MemberExpression设置为“off”,您可以缩进或排列承诺。

排队

client
.setClaim({ userId, claim })
.then(resolve(true), reject)

<强>缩进

client
    .setClaim({ userId, claim })
    .then(resolve(true), reject)

答案 1 :(得分:0)

const enclosing = () => {
  const setClaim = (userId, claim) => {
    client
      .setClaim({ userId, claim })
      .then(() => {
         // ^ insert a newline here
          // do something

          return resolve(true);
        }, // eslint complains about this line
        err => reject(err)
      );
  });
};

我建议在实现处理程序之前添加新行。由于您为.then提供了两个处理程序,因此可以使它们保持在相同的缩进级别。