2014-02-25 3 views
2

내 Firefox OS 응용 프로그램에서 MDN (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)에 설명 된 훌륭한 Promise 인터페이스를 사용하고 싶습니다. 그러나 Firefox 1.3 (시뮬레이터)에서는 지원되지 않습니다 ("약속은 정의되지 않았습니다").Firefox OS에서 약속 사용

구문이 MDN의 사양과 일치하는 작동중인 polyfill이 있습니까? 실제 Promises 인터페이스가 향후 버전에서 지원되면 모든 것을 다시 쓰고 싶지 않습니다.

웹 근로자가있는 Firefox OS에서는이 기능이 작동하지 않습니다 : https://github.com/jakearchibald/es6-promise 이유 : "window"전역 변수를 사용합니다.

약간 MDN 사양에서 differes이 하나 https://github.com/slightlyoff/Promises - 즉 다음 MDN 규격은

new Promise(function (resolve, reject) { /*...*/ resolve(); /*...*/ }); 

을 말한다 동안 ...이 polyfill (이것은 소위 "해결"를 사용)이 구문을 사용하고자 :

new Promise(function (r) { /*...*/ r.resolve(); /*...*/ }); 

답변

0

그냥 내 우리에 간단한

var window = self; 

을 가하고 b 작업자가 polyfill을 https://github.com/jakearchibald/es6-promise에서 만들 것입니다.

답변이며, 적어도 문제를 해결합니다. 아직도, 나는 그것에 만족하지 않다. 작업자 범위에서 글로벌 윈도우 변수를 정의하는 것이 조만간 치명적인 결과를 초래하는 것처럼 보입니다. 일부는 자바 스크립트를 포함 할 때 라이브러리는 웹 작업자의 내부 실행의 여부를 확인하려고 시도 등

그러나 수정이 제작에 : 난 그냥 시뮬레이터를 시도하고 단지 약속이 작업 얻을 수

2

https://github.com/jakearchibald/es6-promise/pull/6 인증 된 앱 실제로 시뮬레이터를 가져 와서 시뮬레이터 (전화 걸기, 카메라 ...)와 함께 제공되는 모든 응용 프로그램을 디버깅하면 콘솔이 생기고 사용 가능한 리소스를 검사 할 수 있으므로 약속을 사용할 수있는 방법을 확인할 수 있습니다.

gecko 마스터를 실행하는 휴대 전화에서도 시도되었으며 적어도 권한 프로그램에 사용할 수 있습니다.

Tools> Add-ons로 이동하면 시뮬레이터를 확장자로 볼 수 있습니다. 환경 설정에서 바이너리를 선택할 수있는 옵션이 있습니다. 아마도 최신 빌드를 다운로드 할 수 있습니다. 여기 :

http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/

하고 그것을 시도를 제공합니다.

+0

실제로 Promise는 인증 된 응용 프로그램에서 지원됩니다. 그러나 내 특권을 가지고 (즉, 그 명단에 "유형 : 특권이 있음"을 의미) 작동하지 않습니다. 애플 리케이션이 마켓 플레이스 등에 의해 인증되면 아마도 작동 할 것입니다. 아직도 얻을 수 없는데, 왜 이것이 일반 패키지 애플리케이션에 사용할 수 없어야할까요?! – thomas

+0

토마스, 최신 버전의 게코, 권한이있는 응용 프로그램은 Promises를 사용할 수 있으므로 시뮬레이터가 사용하는 B2G 바이너리를 업데이트 할 것을 제안하는 이유가 무엇입니까? –

+0

아, 그래, 정말 귀중한 정보 야 .-) – thomas