如何在Angular 2中访问ZoneAwarePromise上的__zone_symbol__值

时间:2017-04-29 17:06:59

标签: angular

我收到了ZoneAwarePromise,当我将其记录到控制台时,我发现它包含__zone_symbol__value我想知道是否可以设置一个等于__zone_symbol__value的变量?

8 个答案:

答案 0 :(得分:3)

我这样做:

  ngOnInit() {    
    console.log(" Ticket initialized");
    this.getBranchTickets().then(data => console.log(data));
  }

  getBranchTickets() {
   return this.ticketService.getBranchTickets().$promise;
  }

答案 1 :(得分:0)

如您所知,storage.get返回一个promise,而不是值。 你需要在.then

中打开承诺
strorage.get('key')
.then( res => console.log(res));

答案 2 :(得分:0)

在您的视图中,您可以使用pipe async访问

(变量|异步)?。字段

答案 3 :(得分:0)

您收到此__zone_symbol__值,因为您在同步验证器列表中错误地包括了返回异步验证器的诺言,请尝试更改验证器的位置,这对我有用。

答案 4 :(得分:0)

240,000

答案 5 :(得分:0)

我通常用$符号表示法来声明可观察对象,例如:

this.profile$: any;
this.profile: any;

this.profile$ = navParams.get('profile');

利用 then()方法返回承诺,我填充了一个没有$符号的变量

const self = this;

this.profile$.then(val => self.profile = val);

我设置了一个 self 常量,保留了这个全局对象,否则将引用promise本身,而不是父对象。

希望这可以帮助某人简化流程。

答案 6 :(得分:0)

async yourFunction(){
    const Ref0 = firebase.firestore().collection("your_collection").doc(doc.id)

    const Ref1 = appointmentsRef.where('val1', '==',condition1).get();
    const Ref2 = appointmentsRef.where("val2", "!=", condition2).get()

    const [snapshot_val1, snapshot_val2] = await Promise.all([Ref1, Ref2]);

    
    const val1_Array = snapshot_val1.docs;
    const val2_Array = snapshot_val2.docs;

    const globale_val_Array = val1_Array .concat(val2_Array );

    return globale_val_Array ;
  }



/*Call you function*/
this.checkCurrentAppointment().then(docSnapshot=> {
      docSnapshot.forEach(doc=> {
          console.log("Your data with multiple code query:", doc.data());
      });
    });

答案 7 :(得分:-2)

确保您没有返回异步对象(例如Observable或Promise)而不是原始对象,数组e等