首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解es6 promise树

如何理解es6 promise树
EN

Stack Overflow用户
提问于 2016-03-14 17:43:12
回答 1查看 93关注 0票数 0

我的project.And中有一个复杂的ajax调用树,我想使用Promise,这是es6的新特性,可以从地狱回调中逃脱。

很难描述整个调用树,所以我做了一个简单的例子来模拟它:promise tree - jsfiddle

在这个示例中,很容易看出我使用Promise遇到了then地狱,您可以想象如果树一直在增长,就不可能理解和修改它。

在这里,我尝试解决这个问题,但失败了:promise try failed - jsfiddle

另外,我读过一些关于Promise的文章,但我认为promise chain不会解决这个problem.Am我误解了promise chain的用法?

请帮帮我,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-03-15 03:09:19

首先,@Bergi的回答很正确:

看起来像条件树而不是promise树的

。你不能真的避免嵌套来进行分支。

-- Bergi

我喜欢使用Promises的方式是使用一个库,它接受一个生成器函数,并将其包装为具有promises的良好行为:

而不是:

代码语言:javascript
复制
task1().then(function (result) {
    // do something...
})

您可以执行如下操作(下面使用库co):

代码语言:javascript
复制
co(function * () {
    try {
        let result = yield task1()
    } catch (e) {
        // handle errors
    }
})

下面是转换为使用生成器函数的示例(JSBin不支持co,所以我使用Q.spawn Q是promise库):https://jsbin.com/gicicinawe/1/edit?js,output

笔记

这假设您的目标JavaScript运行时支持生成器函数。Currently, only Firefox and Chrome support generator functions

进一步阅读

想现在使用它并保持与所有当前浏览器的兼容性吗?

那就用Babel吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35984063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档