我是网络开发的新手,最近我开始面对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);
})
}
}
非常感谢您的协助。
答案 0 :(得分:2)
您必须等待open
事件触发才能使用ID:
getMyId(){
return new Promise((resolve, reject)=>{
this.thepeer.on('open', (id) => {
resolve(this.thepeer.id);
});
})
}