我使用以下代码将文件上传到Google云,然后获取公共网址。但是,在将承诺链接起来时很快就会变得混乱。
在我的例子中,有没有人可以帮助以更清洁的方式链接承诺?
QFile qF(":/file.csv");
if (qF.open(QFile::ReadOnly))
{
QTextStream qTS(&qF);
CSVReader csvReader(qTS.readAll().toStdString());
}
我包含了我的ImageUploader类,就像这样一个FYI。任何其他最佳实践建议也非常受欢迎。
let routes = function(imageUploader) {
router.post('/upload',
imageUploader.getMulter().single('image'),
(req, res) => {
imageUploader.uploadFilePromise(req.file.path)
.then((filename, error) => {
if(error) throw new Error(error);
imageUploader.getExternalUrl(filename)
.then((publicUrl, error) => {
if(error) throw new Error(error);
console.log(publicUrl);
})
})
});
return router;
};
答案 0 :(得分:4)
传递给then()
的回调只接收一个参数,而不是两个参数。
它可以(应该)返回一个值或另一个承诺,以便进一步链接。
如果其中一个回调抛出,或者返回被拒绝的承诺,您可以使用链末尾的catch来处理错误:
imageUploader.uploadFilePromise(req.file.path)
.then(filename => imageUploader.getExternalUrl(filename))
.then(publicUrl => console.log(publicUrl))
.catch(error -> console.log(error));
答案 1 :(得分:0)
简单地说,用.then链接承诺,我发现不添加缩进更清晰。
离。
promise
.then(do something)
.then(do something else);