2015-12-29 3 views
5

Пожалуйста, помогите мне сделать пример о http с синхронным в Angular2?Angular2 http synchronous

Я попытался, как показано ниже: В компоненте:

getAllAddress(){ 
    this.addressService.getAllAddress().then(
      result => { 
       this.data = result.list; 
       this.onChangeTable(this.config, null); 
       console.log('FIRST'); 
      } 
     ); 
    console.log('LAST'); 
} 

В службе:

public getAllAddress(){ 
    return this.__http.get('LOCATION') 
    .map((res) => { 
     return res.json() 
    }) 
    .toPromise(); 
} 

Но журнал консоли шоу 'LAST' до 'FIRST'.

Спасибо.

ответ

1

Вам нужно будет создать свои собственные реализации Connection и ConnectionBackend класс и ввести его во время загрузки вашего приложения. Смотрите пример кода ниже

export class XHRSynchronousConnection implements Connection  
{ 

} 

export class XHRSynchronousConnectionBackend implements ConnectionBackend 
{ 
} 

Вы можете инициализировать ее следующим образом

bootstrap([provide(ConnectionBackend, {useClass:XHRSynchronousBackend}), 
provide(Connection,{useClass:XHRSynchronousConnection}]; 

Вы можете увидеть остальную часть кода в actual source code.

+3

нет, пожалуйста, нет, не делайте этого. это ужасная идея для любого приложения, запущенного в браузере, поскольку оно буквально заморозит приложение, пока запрос находится в полете. См. Документы MDN, в которых упоминается, что это плохая идея. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest – robwormald