ECMAScript에 정의된 함수들은 Synchronous하게도 Asynchronous하게도 동작할 수 있다.

Synchronous하게 동작하는 함수들은 함수의 동작이 완전히 종료될 때까지 제어권을 소요하는

반면에, Asynchronous하게 동작하는 함수들은 제어권을 반환했다 이후에 Callback 함수를 

통해 함수의 동작이 완전히 종료되었다는 것을 알게된다.

BONDI의 takePicture나 getMediaItems 같이 작업을 완료하는데 시간이 소요되는 함수들의

경우 Asynchronous하게 동작하는 방법을 취하는데, 이와 같은 함수들의 Prototype은

아래와 같다.

function captureSuccess (fileURL) {
   alert (“Capured Picture : ” + fileURL);
}

function captureError (error) {
   alert(error.code);
}

var cams = bondi.camera.getCameras();
cams.takePicture(captureSuccess, captureError);


Widget의 제작자가 BONDI의 Camera모듈의 takePicture함수를 이용하여 사진을

촬영한다고 가정하면, 단말기는 위의 Script를 처리하기 위하여 우선 takePicture 함수를

실행시킨다. 위의 함수는 Asynchronous하게 동작하기 때문에 함수의 실행과 동시에

제어권을 반환한다. 이후 사진 촬영의 완료를 알리는 이벤트를 수신하면

captureSuccess 함수를 실행시킴으로써 takePicture기능이 정상적으로 수행됐다는

것을 알려준다. 만약 사진 촬영중 어떠한 문제가 발생하여 촬영을 완료하지 못했다는

이벤트를 수신하게 되면 captureError 함수를 실행시킴으로써 takePicture함수를

수행하는 중 문제가 발생했다는 것을 알려준다.

BONDI에서 정의된 함수중 Asynchronous하게 동작하는 함수들은 위와 같은 방식으로

동작한다.