나는 store locator를 빌드하고 require를 통해 사용자 정의 모듈을로드하고 있습니다. 사용자 지정 모듈은 방향 &에 의존합니다. Microsoft에서 제공하는 검색 모듈. 콜백 지옥이 싫어서 모듈을 미리로드하려면 모든 모듈이로드 된 후 커스텀 모듈에 대한 약속과 액션을 반환해야합니다.Microsoft 빙지도 api 및로드 모듈 문제
블루 버드를 약속 사양으로 사용하고 몇 가지 접근 방법을 시도했습니다. Promise.method
, Promise.promisify
, new Promise(function(resolve, reject){Microsoft.Maps.loadModule({callback:resolve})})
나는 그 중 어떤 것도 작동하지 않는 것 같습니다.
내 최신 구현 : 사람이 지적 할 수 Uncaught TypeError: Cannot read property '_tryFollow' of undefined bluebird.js
에서
function loadSearch() {
var resolver = Promise.defer();
Microsoft.Maps.loadModule('Microsoft.Maps.Search', {
callback: resolver.resolve
});
return resolver.promise;
} /* end loadSearch */
function loadDirections() {
var resolver = Promise.defer();
Microsoft.Maps.loadModule('Microsoft.Maps.Directions', {
callback: resolver.resolve
});
return resolver.promise;
}
Promise.all([loadSearch(), loadDirections()], function() {
//do something
});
결과 어떤 최신 코드에 명백한 오류 또는 약속의 방식으로 로딩 모듈의 사이비 코드 예제.
@Esailija whoops : D 감사합니다. –
Bluebird가이 경우 더 나은 오류 메시지를 제공합니다. https://github.com/petkaantonov/bluebird/commit/d8014cdef319da01a6bd0a076b5ab6f4b39ed3cc –
아, API 문서에서 '.then()'을 찾지 못했지만 promise.defer에 대해 혼란스러워합니다.) 대 생성자. '.callback'에 대한 api [docs] (https://github.com/petkaantonov/bluebird/blob/master/API.md#callback---function)는 제가 가지고있는 것보다 지연된 것을 사용하는 정확한 예입니다. 에 대해 의견을 말하십시오. "이것은 새로운 약속을 사용하는 것보다 더 효과적인 약속 방법입니다." --- 또 다른주의 사항은 여기 또는 오후'Promise.promisify'에서 설명 할 수 있습니다. 나는'var promiseLM = Promise.promisifyAll (Microsoft.Maps.loadModule)'과 같은 것을 할 수 있어야하고'promiseLM(). then()'과 같은 것을 사용할 수 있어야한다고 느꼈다. – Fozz