首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rxjs5 toPromise不工作

rxjs5 toPromise不工作
EN

Stack Overflow用户
提问于 2017-04-10 09:32:32
回答 2查看 4.2K关注 0票数 12

在以下示例中,toPromise不起作用:

https://jsfiddle.net/tossp/nmf9jg32/

我的代码:

代码语言:javascript
复制
function getPostData() {
    return fetch('https://jsonplaceholder.typicode.com/posts/1')
    .then(res => res.json())
}
var source = Rx.Observable.fromEvent(document.body, 'click');

var example = source.concatMap(
            e => Rx.Observable.from(getPostData()), 
            (e, res, eIndex, resIndex) => res.title);

example.subscribe({
    next: (value) => { console.log('subscribe!!!',value); },
    error: (err) => { console.log('Error: ' + err); },
    complete: () => { console.log('complete'); }
});
example.do((value)=>console.log('do!!!',value)).toPromise().then((value)=>console.log('toPromise!!!',value));
EN

回答 2

Stack Overflow用户

发布于 2017-04-10 16:26:56

已经解决的https://github.com/ReactiveX/rxjs/issues/2536

toPromise本质上就是observable.last().subscribe()

如果你在调用toPromise之前添加.take(1),那么事情就会开始了。

代码语言:javascript
复制
example.do((value)=>console.log('do!!!',value)).take(1).toPromise()
票数 25
EN

Stack Overflow用户

发布于 2019-10-25 00:57:13

在较新的版本中,必须在pipe()中使用take(1)。我做了这样的代码:

代码语言:javascript
复制
async getPromise() {

    return await example
    .pipe(take(1))
    .toPromise();

  }

希望这能帮助到别人。

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

https://stackoverflow.com/questions/43313799

复制
相关文章

相似问题

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