我已经开发了几年的JavaScript,我根本不理解有关承诺的大惊小怪.
似乎我所做的只是改变:
api(function(result){
api2(function(result2){
api3(function(result3){
// do work
});
});
});
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以使用像async这样的库,例如:
api().then(function(result){
api2().then(function(result2){
api3().then(function(result3){
// do work
});
});
});
Run Code Online (Sandbox Code Playgroud)
哪个代码更多,可读性更低.我没有在这里获得任何东西,它也不会突然神奇地"平坦".更不用说必须将事物转换为承诺.
那么,这里的承诺有什么大惊小怪?
我是一个巨大的承诺链,但是我意识到其中一个函数返回一个具有侦听器并对回调做出反应的对象,例如
object.on('data', function(err, data) {
//do something
});
object.on('exit', function(err, data) {
//do something
});
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法使用 Promise 来解决这个问题并将它们变成 thenables。除了重写我的整个 Promise 链以使用回调之外,还有没有其他选择?