JavaScript에서 지연, 약속 및 미래의 차이점은 무엇입니까?


Answers

선택된 답변을 포함하여 이러한 대답은 개념적으로 약속을 도입하는 데는 좋지만이를 구현하는 라이브러리를 사용할 때 발생 하는 중요한 차이점 (정확히는 차이점이 있음)에 대한 구체적인 내용이 부족합니다.

여전히 진화하고있는 스펙 이기 때문에 현재 en.wikipedia.org/wiki/Futures_and_promises 와 같은 참조와 jQuery 와 같은 두 가지 참조를 조사하는 것으로부터 오는 답은 다음과 같습니다.

  • Deferred : 대중적인 참고 문헌, en.wikipedia.org/wiki/Futures_and_promises Promises/A+ 3 4 에서는 결코 설명하지 않았지만 약속 결정의 중재자 ( resolvereject 구현)로서 구현에서 일반적으로 사용됩니다. 5 jQuery 7

    때로 지연은 또한 약속 (구현)이며, 지연만으로 해결할 수있는보다 순수한 것으로 간주되어 사용자가 사용에 대한 약속에 액세스하도록 강제합니다. 7

  • 약속 : 토론중인 전략에 대한 가장 포괄적 인 단어.

    동시성을 추상화하고자하는 대상 함수의 결과를 저장하는 프록시 객체와 다른 대상 함수를 받아들이고 새로운 약속을 반환하는 함수 then 노출하는 프록시 객체입니다. Promises/A+

    CommonJS 예 :

    > asyncComputeTheAnswerToEverything()
        .then(addTwo)
        .then(printResult);
    44
    

    누구의 책임 해결에 관해서는 언급하지 않았지만 항상 대중적인 참고 문헌에 설명되어 있습니다. en.wikipedia.org/wiki/Futures_and_promises Promises/A+ 3 4

    항상 인기있는 구현에 존재하고, 해결책을 제공하지 못했습니다. 5 jQuery 7

  • 미래 : 일부 인기있는 참고 문헌 en.wikipedia.org/wiki/Futures_and_promises 과 적어도 하나의 인기있는 구현 8 에서 발견되는 겉으로보기에는 비추천 된 용어이지만 '약속'이라는 용어에 우선하여 토론에서 제외되고 겉으로는 주제에 대한 대중적 소개에서 언급되지 않은 것 같습니다. 9

    그러나 적어도 하나의 라이브러리는 동 기성 및 오류 처리를 추상화하기 위해 일반적으로이 용어를 사용하지만 기능을 제공하지는 않습니다. '약속'이라는 용어를 의도적으로 사용하는 것을 의도적으로 피하는 것이 의도적 이었는지는 확실하지 않지만 약속은 '선택 가능'주위에 만들어지기 때문에 아마도 좋은 선택 일 수 있습니다. Promises/A+

참고 문헌

  1. en.wikipedia.org/wiki/Futures_and_promises
  2. 약속 / A + 사양
  3. 3
  4. 4
  5. 5
  6. jQuery
  7. 7
  8. 8
  9. 9
  10. 10

기타 잠재적으로 혼란스러운 것들

Question

후불, 약속 및 선물의 차이점은 무엇입니까?
이 세 가지 모두에 일반적으로 승인 된 이론이 있습니까?




Promise 는 약속이 만들어 질 때 반드시 알려지지 않은 값에 대한 프록시를 나타냅니다. 비동기 액션의 최종 성공 값 또는 실패 이유에 핸들러를 연결할 수 있습니다. 이렇게하면 비동기 메서드에서 동기 메서드와 같은 값을 반환 할 수 있습니다. 최종 값 대신 비동기 메서드는 향후 어느 시점에서 값을 가질 것이라는 약속을 반환합니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

deferred.promise() 메서드를 사용하면 비동기 함수를 사용하여 다른 코드가 내부 요청의 진행 또는 상태를 방해하지 못하게 할 수 있습니다. Promise는 추가 핸들러를 연결하거나 상태를 결정하는 데 필요한 지연된 메소드 만 노출하지만 상태를 변경하는 것은 아닙니다 ( 해결, 거부, 통지, 해결, rejectWith 및 notifyWith ).

타겟이 제공되면, deferred.promise() 는 메소드를 그것에 첨부 한 다음 새로운 객체를 생성하지 않고이 객체를 리턴합니다. 이미 존재하는 개체에 약속 동작을 첨부하는 것이 유용 할 수 있습니다.

지연을 작성하는 경우 지연 또는 지연을 참조 할 수 있도록 지연을 참조하십시오. deferred.promise ()를 통해 Promise 객체 만 반환하면 다른 코드가 콜백을 등록하거나 현재 상태를 검사 할 수 있습니다.

PromiseDeferred 가 아직 완료되지 않은 작업을 나타내는 경우 알려지지 않은 값을 나타낼 수 있습니다.




Links