嵌套 event.subscribe 解决方案

问题描述

我正在使用 Angular dragula 拖放功能,它允许我在视图中移动引导卡。 当您“放下”某个项目时,它会触发 this.dragulaService.drop.subscribe(),在其中我可以取消或回滚在移动完成之前拖动的项目。

我想在那里使用我的模态。看起来像这样: 让订阅 = this.modalService.onSubmit.subscribe((val) => {

该模态订阅保持线程等待用户在模态中单击“确定”或“取消”,其中显示“您确定要移动此项目吗?”

问题是,otter 事件订阅 (dragula) 不会等待模态事件订阅完成,dragula 只是在模态确认之前结束,这对我来说是个问题。因为当我尝试调用 drake.cancel 时,它已经不存在了。

代码

    this.dragulaService.drop.subscribe(
        value => {
        let modal: ModalComponent = this.modalService.GetModal();
        let subscription = this.modalService.onSubmit.subscribe((val) => {
            //Here if user clicks OK,we do nothing and drag-drop finish successfuly
            //If user clicks Cancel,we call this.dragulaService.find('bag-deals').drake.cancel(true);

解决方法

您可以在管道中使用 concatMap,这是一篇关于 Higher-Order RxJS Mapping Operators

的有趣文章

我在你的情况下是这样使用的:

    bankroll=[]
with open("abc.txt","r") as b:
    lines=b.readlines()
for line in lines:
    if "bankroll" in line:
        key,value = [x.strip() for x in line.strip().split(':',1)]
        bankroll.append[value]

[
{
    "private": {
        "bankroll": 1000,"last_bid": 0,"launching": false,"name": "abc","tech": 0
    },"public": {
        "auction_round": 0,"game_stage": "start","last_mining_payoff": 0,"last_winning_bid": 0,"last_winning_bidders": [],"last_winning_miner": "","max_rounds": 201,"players": {
            "AggressiveLauncher": {
                "bankroll": 1000
            },"abc": {
                "bankroll": 1000
            },"PassiveLauncher": {
                "bankroll": 1000
            },"def": {
                "bankroll": 1000
            },"SpongeBob": {
                "bankroll": 1000
            }
        },"round": 0
    }
},