承诺的确切行为是什么?

时间:2017-05-01 01:49:59

标签: javascript angular peerjs

我是网络开发的新手,最近我开始面对promises,所以在下面的代码中,结果会在几毫秒后得到解决,但如果我刷新浏览器并立即点击按钮,我会得到一个&#34; undefined&#34;,它应该是这样的还是承诺通常必须等待并且不给出任何结果(甚至是未定义的),除非它已经解决或失败或者我的实现是错误的?< / p>

import { Component, OnInit } from '@angular/core';


@Component({
  selector: 'my-app',
  template: `<button (click)="showMyId()">Next</button>
  <h1>S {{myId}} </h1>`,
})
export class AppComponent implements OnInit { 
  thepeer: any;
  myId: any;

  ngOnInit(){
    this.thepeer = new Peer({key: '1h907r5xnvims4i'});
    this.showMyId();
  }

  showMyId(){
    this.getMyId().then((id)=>{
      this.myId = id;
      console.log(this.myId);
    })
  }

  getMyId(){
    return new Promise((resolve, reject)=>{
      resolve(this.thepeer.id);
    })
  }



}

非常感谢您的协助。

1 个答案:

答案 0 :(得分:2)

您必须等待open事件触发才能使用ID:

getMyId(){
    return new Promise((resolve, reject)=>{
      this.thepeer.on('open', (id) => {
          resolve(this.thepeer.id);
      });
   })
}

请参阅文档:http://peerjs.com/docs/#start