获得所需结果的最犹豫的方式是什么,而不是在新承诺中承诺并且调用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
中没有抛出的错误会在基础承诺链中被捕获,yay
的值也不会被传递。
答案 0 :(得分:2)
transferFile
会返回承诺,但您会在第二次调用中将其丢弃。
请注意,我在then
函数中返回它。
transferFile(image, 'bucketName')
.then(exists=>{
console.log(exists);
return transferFile(video, 'bucketName');
})
// getting undefined rather than yay
.then(yay)...