2015-08-12 5 views
1

У меня есть эта функция в JavaScript (машинопись):Как я могу вернуть обещание и данные?

getRole =() => { 
    return this.getData(EnumGetData.Role) 
     .then((data) => { 
      this.role = data; 
      // I want to do something with data here which is why 
      // I have the .then 
     }); 
} 

Вот как я вызываю функцию:

return enumService.getRole() 
    .then((results): void => { 
     // I want to do something here with results 
    }); 

функция работает, но и возвращает успех или неудачу, я хотел бы также возвращаемые данные

Может кто-нибудь дать мне некоторое представление о том, как я могу это сделать?

ответ

1

Кажется достаточно легко

getRole =() => { 
    return this.getData(EnumGetData.Role) 
     .then((data) => { 
      this.role = data; 
      // I want to do something with data here which is why 
      // I have the .then 
      // "I would like to also return data" 
      return data; 
     }); 
} 

Перечитав этот вопрос, возможно, я неправильно понял ... Вы хотите getRole вернуть обещание и данные? если это так, то вы не можете этого сделать, потому что если this.getData является асинхронным, то getRole не может вернуть data (игнорируя тот факт, что функция возвращает одно значение)

вопреки распространенному заблуждению, обещание не сделать асинхронный код синхронного

(к вашим комментариям ниже, я вижу, я НЕ понял ваш вопрос, и вы должен понять о том, как работает Promise,)

НО, если бы вы были

getRole().then(function(x) { 
    console.log(x); 
}); 

вы' найдем, что x == данные в приведенном выше коде

+0

хорошо отлично !!!! Я попробую это сейчас –

+0

Возможно, я неправильно понял вопрос ... вы хотите, чтобы 'getRole' возвращал данные? –

+0

Да, я это сделал. Я попробовал ваше предложение, и это сработало! –

Смежные вопросы