【发布时间】:2020-02-27 01:38:06
【问题描述】:
(提示:我正在使用基于koa 的nodejs 框架eggjs)
下面的代码可以成功运行。但是如果我把resolve()放到fs.renameSync()的回调函数中,promise不会返回任何东西,请求会保持pending状态。 p>
这是什么原因造成的?这和执行顺序有关系吗?
async uploadAsset(assetName, file) {
const { app } = this;
const logger = this.logger;
return new Promise(function(resolve, reject) {
fs.renameSync(file.filepath, `${app.config.multipart.projectAssetLocalPath}${assetName}`, err => {
if (err) {
logger.warn(err);
reject();
}
});
resolve();
});
}
【问题讨论】:
-
我知道没有理由将同步的
fs.renameSync()包装在一个承诺中。它只是让它更难使用。 -
你打电话给对方的
.then()?比如uploadAsset('name', file).then(function() {...});? -
而且,
fs.renameSync()没有回调。
标签: javascript node.js koa