我是Java的新手。 由于某些旧系统,目前我正在将一些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
做错了。但是如何获得相同的结果?
答案 0 :(得分:1)
通过一些格式化,您可以轻松看到不同之处。
一次您根据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)
}
)
}
);
答案 1 :(得分:0)
错误之处:
从您的代码中,我将删除$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) });
});