
no-promise-executor-return
禁止從 Promise 執行器函式中回傳值
💡 有建議
此規則回報的一些問題可以透過編輯器建議手動修復
new Promise
建構子接受一個稱為執行器的單一引數。
const myPromise = new Promise(function executor(resolve, reject) {
readFile('foo.txt', function(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
執行器函式通常會啟動一些非同步操作。一旦完成,執行器應使用結果呼叫 resolve
,或者如果發生錯誤則呼叫 reject
。
執行器的回傳值會被忽略。從執行器函式回傳值可能是一個錯誤,因為回傳的值無法使用,並且它不會以任何方式影響 promise。
規則詳情
此規則禁止從 Promise 執行器函式中回傳值。
只允許沒有值的 return
,因為它是一個控制流程語句。
此規則的錯誤程式碼範例
在遊樂場開啟
/*eslint no-promise-executor-return: "error"*/
new Promise((resolve, reject) => {
if (someCondition) {
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
new Promise((resolve, reject) => );
new Promise(() => {
});
new Promise(r => );
此規則的正確程式碼範例
在遊樂場開啟
/*eslint no-promise-executor-return: "error"*/
// Turn return inline into two lines
new Promise((resolve, reject) => {
if (someCondition) {
resolve(defaultResult);
return;
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
// Add curly braces
new Promise((resolve, reject) => {
getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
new Promise(r => { r(1) });
// or just use Promise.resolve
Promise.resolve(1);
選項
此規則接受一個選項,一個具有以下屬性的物件
allowVoid
:如果設定為true
(預設為false
),此規則將允許回傳 void 值。
allowVoid
使用 { "allowVoid": true }
選項的此規則的正確程式碼範例
在遊樂場開啟
/*eslint no-promise-executor-return: ["error", { allowVoid: true }]*/
new Promise((resolve, reject) => {
if (someCondition) {
return void resolve(defaultResult);
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
new Promise((resolve, reject) => void getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}));
new Promise(r => void r(1));
相關規則
版本
此規則是在 ESLint v7.3.0 中引入的。
延伸閱讀
