gpt4 book ai didi

javascript - 如何将 "callback pyramid"重构为基于 promise 的版本

转载 作者:可可西里 更新时间:2023-11-01 09:52:23 27 4
gpt4 key购买 nike

我目前正在努力真正理解如何重构我的代码以使用 promises/Q 库。

考虑以下常见的基本示例:我有一个测试用例,将同一文件两次导入 mongodb,然后检查第二次导入的数据集名称是否在末尾有一些修饰符。

importDataSet('myFile.csv',function () {
importDataSet('myFile.csv',function () {
DataSet.find({title: 1}, function (err, result) {
result.length.should.be.equal(2);
result[0].title.should.startWith('myFile');
result[1].title.should.startWith('myFile');
result[0].title.should.not.be.equal(result[0].title);
done();
});
});
});
done();
});

(done() 是最后的回调):

那么我该如何使用 promises 来做到这一点呢?最好不要更改函数签名,(我遵循惯例将回调作为最后一个参数)。

最佳答案

我不确定为什么 done() 在您的代码中被调用了两次,但如果没有它,它可能看起来类似于:

importDataSet('myFile.csv')
.then(function () {
return importDataSet('myFile.csv')
}).then(function () {
return DataSet.find({title: 1})
}).then(function (result) {
result.length.should.be.equal(2);
result[0].title.should.startWith('myFile');
result[1].title.should.startWith('myFile');
result[0].title.should.not.be.equal(result[0].title);
done();
});

关于javascript - 如何将 "callback pyramid"重构为基于 promise 的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641074/

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