У меня есть файл usecase, где было бы здорово, если бы можно было как-то вернуть значение, полученное в .then()
.Угловой 2 - Возврат внутрь `then` - async
Позвольте мне показать вам, почему и что и чего хотите.
Почти каждый вызов API я хочу отправить по адресу API_KEY
и DEVICE_ID
. Теперь для причин UX эти значения относятся к объекту с именем user
в собственном хранилище (позднее это будет защищенное хранилище).
Дело в том, что мои headers
будут пустыми заголовками, созданными на первой линии. Это имеет смысл, так как .then()
будет асинхронным.
getUserHeaders(): Headers {
let headers: Headers = new Headers();
let user = NativeStorage.getItem("user").then(
data => {
headers.append('API_KEY', data.json().apiKey);
headers.append('DEVICE_ID', data.json().deviceId);
},
error => {
console.log("error");
headers.append('API_KEY', 'TEST');
headers.append('DEVICE_ID', 'TEST');
}
);
return headers;
}
Теперь, что я хочу сделать, на каждом звонке есть: f.e.
this.http.get('someUrl', { headers: this.getUserHeaders() }).map(..);
Мой вопрос, как я могу вернуть заголовки либо из блока data
и error
или я должен попробовать совершенно иной подход?
так, то он стал бы что-то вроде 'this.getUserHeaders(). Затем (headers => this.http.get ('someUrl', {headers: headers}) .map (...)) 'right? – Ivaro18
, но это означает, что мои вызовы API возвратят обещание наблюдаемого? : O – Ivaro18
Вы также можете использовать наблюдаемый для заголовка и использовать 'mergeMap' или какой-либо другой оператор. Возможно, наблюдаемые операторы также поддерживают 'Promise' (не знаю, что я сам их не использую). –