在不嵌套既在新promise中调用promise又调用resolve / reject的情况下获得期望结果的最简洁的方法是什么?
例
const transferFile = (fileName, bucketName)=>{
const destinationBucket = gcs.bucket(bucketName);
return exists = destinationBucket.file(fileName).exists()
.then(exists=>{
if(exists[0]){
return true;
} else {
// calling another method that returns a promise
return file.move(destinationBucket)
.then(yay=>{
// return yay
return yay;
});
}
});
}
transferFile(image, 'bucketName')
.then(exists=>{
console.log(exists);
transferFile(video, 'bucketName');
})
// getting undefined rather than yay
.then(yay)...
我希望将
yay
值从file.move
返回到基本承诺链。当前,从file.move
引发的所有错误都不会在基本的Promise链中捕获,也不会传递yay
的值。 最佳答案
transferFile
返回承诺,但您在第二次调用中将其丢弃。
因此请注意,我在then
函数中将其返回。
transferFile(image, 'bucketName')
.then(exists=>{
console.log(exists);
return transferFile(video, 'bucketName');
})
// getting undefined rather than yay
.then(yay)...