Правила JavaScript / ESLint в SAPUI5

1

Я хочу преобразовать этот метод, чтобы полностью применить правила ESLint в SAP WEB IDE:

getBase64Promise: function (file) {
        return new Promise((resolve, reject) => {    // <-- 
            const reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onload = () => {                  // <--
                let encoded = reader.result.replace("data:", "").replace(/^.*;base64,/, "");  // <--
                if ((encoded.length % 4) > 0) {
                    encoded += '='.repeat(4 - (encoded.length % 4));
                }
                resolve(encoded);
            };
            reader.onerror = error => reject(error); // <--
        });
},

Изображение 174551

ESLint не справляется с этими правилами:

  • в скобках с использованием "=>" следует заменить
  • также заменить "let"

Может ли кто-нибудь помочь? Я пробовал некоторые вещи, но он не работает вообще:

getBase64Promise: function (file) { 
  return new Promise(function (resolve, reject) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload(function () {
            var encoded = reader.result.replace("data:", "").replace(/^.*;base64,/, "");
            if ((encoded.length % 4) > 0) {
                encoded += "=".repeat(4 - (encoded.length % 4));
            }
            resolve(encoded);
        });

        reader.onerror(function () {
            reject(reader.error);
        });
  });
},

Спасибо Крису

  • 0
    Может помочь, если вы точно отметили, какие правила были неудачными, а не просто «должны быть заменены»
  • 0
    Да, это может быть связано с редактором (WEB IDE от SAP), но я могу видеть только сообщения об ошибках, а не базовые правила ESLint в деталях. извиняюсь. Но я знаю, что при замене всех «=>» и «позволяет» он не показывает никакой ошибки.
Показать ещё 3 комментария
Теги:
ecmascript-6
sapui5
eslint
sap-web-ide

2 ответа

1
Лучший ответ

Функция => или стрелка - это короткий отрезок для создания анонимной функции. Это также способ привязки текущей области к функции без явного добавления .bind(this).

Вы можете легко заменить его, изменив это:

(params) => {

в

function(params) {

Так что-то вроде

getBase64Promise: function(file) { 
  return new Promise(function(resolve, reject) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload(function() {
            var encoded = reader.result.replace("data:", "").replace(/^.*;base64,/, "");
            if ((encoded.length % 4) > 0) {
                encoded += "=".repeat(4 - (encoded.length % 4));
            }
            resolve(encoded);
        });

        reader.onerror(function() {
            reject(reader.error);
        });
  });
  • 0
    отлично, спасибо. хотя бы один человек, который полностью прочитал постановку задачи ... :)
0

Я заменил function на function arrow function и устаревшую var для let или const:

getBase64Promise: (file) => { 
  return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload(() => {
            let encoded = reader.result.replace("data:", "").replace(/^.*;base64,/, "");
            if ((encoded.length % 4) > 0) {
                encoded += "=".repeat(4 - (encoded.length % 4));
            }
            resolve(encoded);
        });

        reader.onerror(() => {
            reject(reader.error);
        });
  });
},
  • 0
    не поймите меня неправильно, но это почти так же, как моя оригинальная версия?
  • 0
    Нет, во-первых, у вас нет функции стрелки.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню