Promise Resolved时如何显示含动态参数的文本值?
问题解决:Promise resolve无法携带文件名参数
核心问题
Promise.resolve() 只接受单个参数作为兑现值,你传多个参数的话,只有第一个会被传递到then()里,后面的参数都会被直接忽略——这就是你拿不到fileName+newExt值的根本原因。
两种修复方案
方案1:拼接成完整字符串返回
直接把消息和文件名拼接成一个字符串,让resolve只传一个参数:
// 修改writeToFile里的resolve语句 resolve(`successfully saved the data to file: ${fileName+newExt}`);
在then里直接打印即可:
.then(statusMsg => { console.log("write-to-file status message:", statusMsg); // ...其他逻辑代码 })
方案2:返回包含多信息的对象
如果需要单独提取消息和文件名做后续操作,可以返回一个对象:
// 修改resolve语句 resolve({ message: "successfully saved the data to file:", filePath: fileName + newExt });
在then里解构使用:
.then(result => { console.log("write-to-file status message:", `${result.message} ${result.filePath}`); // 也可以单独用result.filePath做其他处理 // ...其他逻辑代码 })
额外需要修复的问题
你的reject语句也存在同样的错误:Error构造函数只接受一个字符串参数,多参数会被忽略,要改成字符串拼接:
// 错误写法 reject(new Error("error occured while writing data to file.error:",error," file:",fileName+newExt)) // 正确写法 reject(new Error(`error occured while writing data to file. error: ${error} file: ${fileName+newExt}`))
另外,fs.writeFile的路径里你用了原始的ext,但前面已经处理生成了newExt,这里应该替换成newExt才符合逻辑:
fs.writeFile(envVars.DEBUG_OUTPUT_PATH_FOR_TIFFS + fileName + newExt, contents,{flag:'w'},(error)=> { // ...内部代码 });
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

