비동기/대기 문제

1986 단어 javascript

비동기는 약속이 아닙니다(아직?)



우리는 코드베이스에서 Promise에서 async/await로 이동해 왔으며 대부분 매우 순조롭게 진행되었습니다. 코드 줄 적기, 표현력 향상 등

그러나 전달된 변수가 약속인지 여부를 확인하는 한 줄의 코드가 있었습니다.

if (promise instanceof Promise) ...


이것은 비동기로 실패합니다 ... 때때로.

노드 8에서는 false를 제공합니다.

(async () => {})() instanceof Promise
// -> false


크롬에서는 true를 제공합니다.

(async () => {})() instanceof Promise
// -> true


내 가정은 true가 올바른 응답이고 이것은 노드에서 수정해야 할 버그(아마도 이미)라는 것입니다.

그 동안 우리는

if (promise instanceof Promise || promise.constructor.name === 'Promise') ...


그리고 난 여전히

좋은 웹페이지 즐겨찾기