JavaScript承诺不会将数据传递给。然后,除非我显式使用Promise.resolve

JavaScript承诺不会将数据传递给。然后,除非我显式使用Promise.resolve,javascript,promise,Javascript,Promise,我的代码从Google translate获取翻译,将翻译推送到数组中,然后将翻译数组传递给下一个代码块。或者它没有,这取决于语法。这项工作: translate.translate(text, target) .then(function(results) { translation = results[0]; translationArray.push(translation); return Promise.resolve(translationArray); }) .then

我的代码从Google translate获取翻译,将翻译推送到数组中,然后将翻译数组传递给下一个代码块。或者它没有,这取决于语法。这项工作:

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);
translationaray
记录为
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);
返回数组的新长度。如果数组为空,则在添加元素后,新长度为
1
。这就是
1
的来源

您不必使用
Promise.resolve
,只需
返回translationArray返回数组的新长度。如果数组为空,则在添加元素后,新长度为
1
。这就是
1
的来源


您不必使用
Promise.resolve
,只需
返回translationArray

如果
.push()
确实返回了数组引用,那就太好了,但是唉。@Pointy
常量push=(a,…元素)=>(a.push(…元素),a)
;)如果
.push()
确实返回了数组引用,那就太好了,但是唉。@Pointy
const push=(a,…elements)=>(a.push(…elements),a)
;)