(промежуточное значение). Тогда это не функция - PullRequest
1 голос
/ 05 мая 2019

Я новичок в Javascript.В настоящее время я преобразовываю некоторый код ES6 обратно в код ES5 из-за некоторых устаревших систем.Я преобразовал следующий код:

$row.find('.gridCellDetailAction')
 .each((i, elem) => $translate('Grid.Show' + $(elem).attr('data-title') + 's')
.then(trans => $(elem).attr('title', trans)));

К этому

   $row.find('.gridCellDetailAction')
        .each(function (i, elem) {
              $translate('Grid.Show' + $(elem).attr('data-title') + 's')
   }.then(function (trans) { $(elem).attr('title', trans) }));

Теперь я получаю следующую ошибку:

(промежуточное значение) .then isне функция

Теперь я знаю, что что-то не так с then.Но как я могу получить тот же результат?

Ответы [ 2 ]

1 голос
/ 05 мая 2019

С небольшим форматированием вы можете легко увидеть разницу. Один раз вы вызываете then для результата $translate, а другой раз вы вызываете then для определения функции.

$row.find('.gridCellDetailAction')
.each(
  (i, elem) => {
    $translate(
     'Grid.Show' + $(elem).attr('data-title') + 's'
    )
    .then(
      trans => $(elem).attr('title', trans)
    )
  }
);
$row.find('.gridCellDetailAction')
.each(
  function (i, elem) {
    $translate('Grid.Show' + $(elem).attr('data-title') + 's')
  }// <-- The error is here
  .then(
    function (trans) { 
      $(elem).attr('title', trans) 
    }
  )
);

Это было бы правильно:

$row.find('.gridCellDetailAction')
.each(
  function (i, elem) {
    $translate('Grid.Show' + $(elem).attr('data-title') + 's')
    .then(  //Now then is called on the result of $translate
      function (trans) { 
        $(elem).attr('title', trans) 
      }
    )
  }
);
0 голосов
/ 05 мая 2019

Что не так:
Из вашего кода я удалю $row.find('.gridCellDetailAction').each();

function (i, elem) {
    $translate('Grid.Show' + $(elem).attr('data-title') + 's')
}
.then(function (trans) { $(elem).attr('title', trans) })

Этот код кажется неправильным;Итак, нам нужно поставить .then(function (trans) { $(elem).attr('title', trans) }) в function()


Полный код:

$row.find('.gridCellDetailAction')
    .each(function (i, elem) {
        $translate('Grid.Show' + $(elem).attr('data-title') + 's')
            .then(function (trans) { $(elem).attr('title', trans) });
    });
...