首页 > 解决方案 > 如何在订阅中返回值?

问题描述

我有以下方法,订阅里面的值是正确的,但是订阅范围之外,它是空白的。

getTranslation(text: string): string {
  var translatedText: string = "";
  this.translate.get(text).subscribe((text: string) => {
  translatedText = text;
  alert(translatedText);
 });
  alert(translatedText);
  return translatedText;
 }

标签: angulartypescript

解决方案


subscribe 可能是一个异步函数。无法从 subscribe 获取值并将其同步移动到外部范围,因为您不知道调用回调需要多长时间。

为了返回一个值,您还必须通过返回一个promisegetTranslation来使方法异步。

将现有代码移动到回调中subscribe

function getTranslation(text: string): string {
  return new Promise(async (resolve) => {
    this.translate.get(text).subscribe((text: string) => {
      resolve(text);
    });
  });
}


推荐阅读