gpt4 book ai didi

javascript - 如何同步链接 q.nf 调用

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

我读了一些教程,但我不明白如何链接各种 promise 来读取文件,但一个接一个,我认为这非常简单,但我不明白。

其想法是打开一个文件,读取另一个文件的文件名,打开该文件,然后启动 Express 服务器。我得到了类似的东西,但我认为我做得不太好,它有效,但我不喜欢它。

我的代码如下所示:

Q.nfcall(fs.readFile, path.resolve(__dirname, './config/db/default.connection.json'), "utf-8")
.then(function(data){ ...
/*HERE I OPEN OTHER 'Q' PROMISE FOR READ OTHER FILE AND START SERVER*/
Q.nfcall(..). then(function(data2){ ... })
.catch(function(err){.. });
}). fail(function(err){...})
.done();
})
.catch(function(err) { ...});
})
.fail(function(err) {.. })
.done();

最佳答案

您可以通过从 .then() 处理程序返回新的 Promise 来链接 Promise,

Q.nfcall(fs.readFile, 'file1.txt').then(function(data1) {
console.log('file 1 read');
return Q.nfcall(fs.readFile, 'file2.txt'); // return a new promise
}).then(function(data2) {
console.log('file 2 read');
}).catch(function(err) {
...
}).done();

错误/异常也将沿着链传播。

编辑:如果您希望读取file1.txt时出现错误而不传播,而是以不同的方式处理(改为创建文件),您可以使用像这样的东西:

Q.nfcall(fs.readFile, 'test1.txt', 'utf-8').then(null, function(err) {
// create an empty file (or whatever)
return Q.nfcall(fs.writeFile, 'test1.txt', '').then(function() {
return Q.nfcall(fs.readFile, 'test1.txt', 'utf-8');
});
}).then(function(data) {
console.log('data 1', data);
return Q.nfcall(fs.readFile, 'test2.txt', 'utf-8');
}).then(function(data) {
console.log('data 2', data);
}).catch(function(err) {
...
});

(可能可以做得更简洁)

关于javascript - 如何同步链接 q.nf 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002341/

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