Javascript 重写要异步的函数

Javascript 重写要异步的函数,javascript,angular,typescript,Javascript,Angular,Typescript,如何将以下内容重写为异步函数?它在视图上不断返回未定义的referralUrl: 控制器 createReferralUrls(){ this.referralUrl=this.referralService.generaterFerralUrl(this.userData.referralId); this.campaignMessage='在此处注册:'+this.referralUrl+'; 这是一家书店http://www.facebook.com/sharer/sharer.php?u

如何将以下内容重写为异步函数?它在视图上不断返回未定义的referralUrl:

控制器

createReferralUrls(){
this.referralUrl=this.referralService.generaterFerralUrl(this.userData.referralId);
this.campaignMessage='在此处注册:'+this.referralUrl+';
这是一家书店http://www.facebook.com/sharer/sharer.php?u=“+this.referralUrl;
这是什么https://wa.me/?text="这是一条信息,;
this.twitterShareUrl=https://twitter.com/intent/tweet?text="这是一条信息,;
this.emailShareUrl='mailto:?subject=欢迎访问我们的网站!&body='+this.campaigmessage;
}
html


参考服务

generatereferralull(referralId){
如果(location.host=='localhost:4200'){
返回“localhost:4200/invite/”+referralId;
}else if(location.host==='myapp.herokuapp.com'){
返回'myapp.herokuapp.com/invite/'+referralId;
}else if(location.host==='myapp.com'){
返回“myapp.com/invite/”+referralId;
}
}

您需要在此处实现可观察调用

    createReferralUrls() {
       this.referralService.generateReferralUrl(this.userData.referralId)
        .subscribe(
         (res)=>{        
            this.campaignMessage = 'Sign up here: ' + res + '.';
            this.facebookShareUrl = 'http://www.facebook.com/sharer/sharer.php?u=' + res;
            this.whatsappShareUrl = 'https://wa.me/?text=' + this.campaignMessage;
            this.twitterShareUrl = 'https://twitter.com/intent/tweet?text=' + this.campaignMessage;
            this.emailShareUrl = 'mailto:?subject=Welcome to our site!&body=' + this.campaignMessage;        
        }
       );      
      }
请同时添加您的服务,以便我们也可以编辑您的服务返回类型

更新2: 更改您的服务如下:

  generateReferralUrl(referralId) {
    if (location.host === 'localhost:4200') {
      return Observable.create((observer) => { observer.next('localhost:4200/invite/' + referralId) });
    } else if (location.host === 'myapp.herokuapp.com') {
      return Observable.create((observer) => { observer.next('myapp.herokuapp.com/invite/' + referralId) });
    } else if (location.host === 'myapp.com') {
      return Observable.create((observer) => { observer.next('myapp.com/invite/' + referralId) });
    }
  }

请这样更改您的输入

referralservice中的GenerateFerralUrl如何生成url?我现在发布了它。请检查您是否可以让您的函数返回默认值,因为您的服务函数似乎没有任何特定的异步代码,可能需要观察或修改promising@arpitsharma如果它返回的是环境特定的,我该怎么做?你确定这些“如果条件”中的任何一个是真的吗?如果你确定,那么你可以尝试输入值。我已经包含了它。有时间请看一看。我得到一个错误:属性“subscribe”在类型“string”上不存在。ts(2339)实际上您的服务并不像服务那样工作,我刚刚注意到。嗨,我遇到了这个错误:
VM17:1从origin访问'localhost:4200/invite/LHl9uvdY'上的XMLHttpRequest'http://localhost:4200'已被CORS策略阻止:跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、,https。
我不是试图从端点检索数据,只是从文本本身检索数据