약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

PaulProgrammer

롤업을 사용하여 내 페이지에 대한 웹 번들을 빌드하고 있습니다. 잘 작동하는 하나의 promise 체인이 있지만 실행되지 않는 맵을로드하려는 다른 하나가 있습니다.

중단 점을 넣었고 마지막 줄 p().then((m)=>console.log)에서 중단을 볼 수 Q.spread(...)있지만 다른 약속 된 메서드는 실행되지 않습니다.

약속을 강제로 해결하지 못하는 이유는 무엇입니까?

내 코드는 다음과 같습니다.

'use strict';

import Q from 'q';
import GoogleMapsApiLoader from 'google-maps-api-loader';

var getPositionIP = function() {
    return new Q( (res,rej) => {
        let oReq = new XMLHttpRequest();
        oReq.onload = function (e) {
            let loc = { coords: e };
            res(loc);
        }
        oReq.open("GET","https://json.geoiplookup.io/");
        oReq.responseType = "json";
        oreq.send();
    });
};

var getPositionGPS = function(options) {
    return new Q( function(resolve, reject) {
        if( navigator.geolocation ) {
            navigator.geolocation.getCurrentPosition(resolve,reject,options);
        } else {
            reject();
        }
    });
};

let mapEngine = GoogleMapsApiLoader({
    libraries: [],
    apiKey: '<<google maps key>>'
});

let positionEngine = function() {
    return getPositionGPS({})
        .catch(() => getPositionIP());
};

let p = function() { 
    return Q.spread(positionEngine, mapEngine).then((pos,map) => {
        var mapcontainer = document.getElementById("map");
        return new map.Map(mapcontainer, {
            center: {lat: pos.coords.latitude, lng: pos.coords.longitude},
            zoom: 8
        }); 
    });
};

p().then((m)=>console.log);
Bergi

그것은 Q.spread작동 하지 않습니다 . promise는 여전히 단일 값으로 만 spread확인되며 콜백이 호출되는 방식에 영향을줍니다. 문서에 따르면 다음 중 하나를 작성해야합니다.

return Q.spread([positionEngine, mapEngine], (pos, map) => {

또는

return Q.all([positionEngine, mapEngine]).spread((pos, map) => {

현대적인 접근 방식은 매개 변수 구조화 구문을 사용하는 것입니다.

return Q.all([positionEngine, mapEngine]).then(([pos, map]) => {

ES6 promise로 마이그레이션 할 때도 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

약속이 거부 된 것이 무엇인지 파악하는 올바른 방법은 무엇입니까?

분류에서Dev

이러한 약속 체인을 해결하는 방법은 무엇입니까?

분류에서Dev

함수가 종료되도록 약속 거부를 처리하는 올바른 방법은 무엇입니까?

분류에서Dev

모든 약속이 자바 스크립트에서 해결되는지 확인하는 방법은 무엇입니까?

분류에서Dev

모든 약속이 자바 스크립트에서 해결되는지 확인하는 방법은 무엇입니까?

분류에서Dev

AngularJS : 이것이 약속을 연결하는 올바른 방법입니까?

분류에서Dev

약속 체인은 다른 약속이 해결 될 때까지 기다리지 않습니다.

분류에서Dev

약속 체인은 다른 약속이 해결 될 때까지 기다리지 않습니다.

분류에서Dev

변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

분류에서Dev

약속 체인 수를 정의하기 위해 배열을 반복하는 방법은 무엇입니까?

분류에서Dev

.sig 파일이 올바른지 확인하는 방법은 무엇입니까?

분류에서Dev

다른 방법이 올바르게 수행되면 방법을 수행하는 방법은 무엇입니까?

분류에서Dev

DOM 개체를 통해 컨트롤을 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

ASP.NET C #의 EventHandler에서 페이지를 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

Nodejs 약속-약속을 해결하지 않는 함수를 잡는 방법은 무엇입니까?

분류에서Dev

jQuery이 '폐쇄'를 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

약속 해결이 정의되지 않은 값을 반환하지만 해결로 돌아 왔습니다.

분류에서Dev

자바 : 널 (null)과 같이되지 않습니다 아닌 최종 참조 필드를 보장하는 올바른 방법은 무엇입니까?

분류에서Dev

개체가 정의되지 않았을 수 있습니다. VS Null Assertion Operator => 올바른 사용 방법은 무엇입니까?

분류에서Dev

약속이 해결되면 catch에서 오류를 전달하는 방법은 무엇입니까?

분류에서Dev

이 쿼리에 대해 올바른 내부 조인을 수행하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

화면이 내 노트북과 호환되는지 확인하는 올바른 방법은 무엇입니까?

분류에서Dev

이미지의 포인트 수를 계산하는 올바른 방법은 무엇입니까?

분류에서Dev

약속 된 속성을 가진 객체 전체를 해결하는 더 좋은 방법은 무엇입니까?

분류에서Dev

이름이 변수에있는 속성의 값을 작성하는 올바른 방법은 무엇입니까?

분류에서Dev

맵 체인에서 약속 작성 기능을 해결하는 방법은 무엇입니까?

분류에서Dev

React + Redux에서 감속기에 인수를 전달하는 올바른 방법은 무엇입니까?

Related 관련 기사

  1. 1

    약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

  2. 2

    약속이 거부 된 것이 무엇인지 파악하는 올바른 방법은 무엇입니까?

  3. 3

    이러한 약속 체인을 해결하는 방법은 무엇입니까?

  4. 4

    함수가 종료되도록 약속 거부를 처리하는 올바른 방법은 무엇입니까?

  5. 5

    모든 약속이 자바 스크립트에서 해결되는지 확인하는 방법은 무엇입니까?

  6. 6

    모든 약속이 자바 스크립트에서 해결되는지 확인하는 방법은 무엇입니까?

  7. 7

    AngularJS : 이것이 약속을 연결하는 올바른 방법입니까?

  8. 8

    약속 체인은 다른 약속이 해결 될 때까지 기다리지 않습니다.

  9. 9

    약속 체인은 다른 약속이 해결 될 때까지 기다리지 않습니다.

  10. 10

    변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

  11. 11

    약속 체인 수를 정의하기 위해 배열을 반복하는 방법은 무엇입니까?

  12. 12

    .sig 파일이 올바른지 확인하는 방법은 무엇입니까?

  13. 13

    다른 방법이 올바르게 수행되면 방법을 수행하는 방법은 무엇입니까?

  14. 14

    DOM 개체를 통해 컨트롤을 수정하는 올바른 방법은 무엇입니까?

  15. 15

    ASP.NET C #의 EventHandler에서 페이지를 수정하는 올바른 방법은 무엇입니까?

  16. 16

    Nodejs 약속-약속을 해결하지 않는 함수를 잡는 방법은 무엇입니까?

  17. 17

    jQuery이 '폐쇄'를 수정하는 올바른 방법은 무엇입니까?

  18. 18

    약속 해결이 정의되지 않은 값을 반환하지만 해결로 돌아 왔습니다.

  19. 19

    자바 : 널 (null)과 같이되지 않습니다 아닌 최종 참조 필드를 보장하는 올바른 방법은 무엇입니까?

  20. 20

    개체가 정의되지 않았을 수 있습니다. VS Null Assertion Operator => 올바른 사용 방법은 무엇입니까?

  21. 21

    약속이 해결되면 catch에서 오류를 전달하는 방법은 무엇입니까?

  22. 22

    이 쿼리에 대해 올바른 내부 조인을 수행하는 방법은 무엇입니까?

  23. 23

    jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

  24. 24

    화면이 내 노트북과 호환되는지 확인하는 올바른 방법은 무엇입니까?

  25. 25

    이미지의 포인트 수를 계산하는 올바른 방법은 무엇입니까?

  26. 26

    약속 된 속성을 가진 객체 전체를 해결하는 더 좋은 방법은 무엇입니까?

  27. 27

    이름이 변수에있는 속성의 값을 작성하는 올바른 방법은 무엇입니까?

  28. 28

    맵 체인에서 약속 작성 기능을 해결하는 방법은 무엇입니까?

  29. 29

    React + Redux에서 감속기에 인수를 전달하는 올바른 방법은 무엇입니까?

뜨겁다태그

보관