2016-10-04 2 views
0

이것은 아마도 쉽지만 약속 할 가치가 없습니다. 내 코드는 그것을 변경하는 방법, 컴파일되지 않습니다typescript 컴파일러가 Promise에 불평을하지 않도록하십시오.

public static sendTestEvent(): Promise<boolean> { 
    let options: any = {headers: {'Content-Type': 'application/json'}}; 

    this.modifyEvent().then(()=> { 
     return WebRequest.post(this.URI, options, JSON.stringify(this.eventToSend)).then((response) => { 
      return browser.sleep(Config.EVENT_PROCESS_TIMEOUT).then(() => { 
       console.log('resolved'); 
       return Promise.resolve(true); 
      }); 
     }); 
    }, (err)=> { 
     return Promise.resolve(false); 
    }); 

} 

public static modifyEvent(): Promise<boolean> { 
    let currentDate = new Date(); 

    return new Promise<boolean>((resolve, reject) => { 
     console.log('Event modified'); 
     resolve(true); 
    }); 
} 

나는 당신이 약속을 반환하는 등의 방법을 선언 한

+0

sendTestEvent가 아무 것도 반환하지 않습니다. –

답변

2

을 당신이 sendTestEvent 방법에 유형 Promise<resolving to boolean>의 무언가를 반환 계획하고, 당신은 말 했어요 타이프 라이터의 모습에서. 해당 메서드에서 return 문이 발견되지 않은 것 같습니다. 해당 메서드에서 .then 메서드의 결과를 반환하여이 문제를 해결할 수 있어야합니다.

public static sendTestEvent(): Promise<boolean> { 
    let options: any = {headers: {'Content-Type': 'application/json'}}; 

    return this.modifyEvent().then(()=> { 
// ^^^^^^ return here 
     return WebRequest.post(this.URI, options, JSON.stringify(this.eventToSend)).then((response) => { 
      return browser.sleep(Config.EVENT_PROCESS_TIMEOUT).then(() => { 
       console.log('resolved'); 
       return Promise.resolve(true); 
      }); 
     }); 
    }, (err)=> { 
     return Promise.resolve(false); 
    }); 
} 

public static modifyEvent(): Promise<boolean> { 
    let currentDate = new Date(); 

    return new Promise<boolean>((resolve, reject) => { 
     console.log('Event modified'); 
     resolve(true); 
    }); 
} 

이렇게하면 컴파일러에서 발생하는 문제를 해결할 수 있습니다.

+1

실제로 부분적으로 사실 이었지만 여기의 문제는 WebRequest.post 메서드가 Promise를 반환했습니다. <응답 >, 해당 메서드를 제거하면 문제 –

1

'리턴 문이 void 이외의 반환 형식이 필요합니다'얻을. 그래서 그냥 반환 :

public static sendTestEvent(): Promise<boolean> { 
let options: any = {headers: {'Content-Type': 'application/json'}}; 

return this.modifyEvent().then(()=> { 
//... 
관련 문제