gpt4 book ai didi

javascript - Node.js promise 链

转载 作者:行者123 更新时间:2023-12-02 02:03:20 24 4
gpt4 key购买 nike

我是 Node.js 新手,并且能够使用 Promise 来一一运行这些命令:

let promise1 = new Promise(function (resolve, reject) {
sftp.connect({
host: host,
username: user,
privateKey: fs.readFileSync(pemfile)
}).then(() => {
return sftp.get(remotePath, fs.createWriteStream(localPath)); //This writes from a remote file to a local file
}).then(() => {
sftp.end();
resolve();
})
.catch(err => {
console.error(err.message);
reject(err);
});
});

await promise1;

let promise2 = new Promise(function (resolve, reject) {
fs.readFile(localPath, 'utf8', function (err, data) {
if (err) {
reject(err);
}
resolve(data);
});
});

let data = await promise2;

这可行,但我知道这不是最好的方法。有更好的方法吗?

最佳答案

await 可以直接与返回 Promise 的方法一起使用,例如 sftp.connectsftp.getsftp.end 因此您可以直接使用它,该函数将等待该步骤完成。只有fs.readfile不返回Promise,但我们可以调用返回promise的fs.promises.readFile(),然后我们可以使用await

代码可以简化:

try {

await sftp.connect({
host: host,
username: user,
privateKey: fs.readFileSync(pemfile)

})

await sftp.get(remotePath, fs.createWriteStream(localPath));
await sftp.end();
let fileData = await fs.promises.readFile(localPath, 'utf8');
console.log(fileData);

} catch (error) {
console.error(error.message);
}

添加了 try-catch block 以捕获任何操作中的错误。

关于javascript - Node.js promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68731772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com