JavaScript 承诺不会将数据传递给 .then,除非我明确使用 Promise.resolve



我的代码从谷歌翻译中获取翻译,将翻译推送到数组中,然后将翻译数组传递给下一个代码块。或者没有,具体取决于语法。这有效:

translate.translate(text, target)
.then(function(results) {
  translation = results[0];
  translationArray.push(translation);
  return Promise.resolve(translationArray);
})
.then(function(translationArray) {
  console.log(translationArray);

此代码不起作用:

translate.translate(text, target)
.then(function(results) {
  translation = results[0];
  return translationArray.push(translation);
})
.then(function(translationArray) {
  console.log(translationArray);

translationArray日志为1 .1是什么意思?为什么我需要显式使用Promise.resolve

我试过这个,它没有帮助:

const finalPromise = translate.translate(text, target)
.then(function(results) {
   translation = results[0];
   return translationArray.push(translation);
  })
.then(function(translationArray) {
   console.log(translationArray);

Array#push返回数组的新长度。如果您的数组为空,则在添加元素后,新长度为 1 。这就是1的来源。

你不必使用Promise.resolve,你只需要return translationArray;

相关内容

最新更新