[javascript] Ember.js에서 사용되는 비동기 처리 기술은 무엇이 있나요?
  1. Promises(프로미스): Ember.js에서 가장 일반적으로 사용되는 비동기 처리 방식입니다. 프로미스는 비동기 작업의 결과를 담는 객체로, 작업이 성공하거나 실패한 후에 처리를 수행할 수 있습니다. Ember.js에서는 Ember.RSVP.Promise를 사용하여 프로미스를 생성하고 관리할 수 있습니다.
let promise = new Ember.RSVP.Promise(function(resolve, reject) {
  // 비동기 작업 수행
  if (/* 작업 성공 */) {
    resolve(result); // 작업 성공 시 결과를 resolve
  } else {
    reject(error); // 작업 실패 시 에러를 reject
  }
});

promise.then(function(result) {
  // 작업 성공 후 처리
}).catch(function(error) {
  // 작업 실패 후 처리
});
  1. Async/Await(비동기/대기): ECMAScript 2017에서 도입된 비동기 처리 패턴으로, 프로미스를 기반으로 동작합니다. async 함수 내에서 await 키워드를 사용하여 비동기 작업을 처리하고, 작업이 완료될 때까지 함수의 실행을 일시 중지합니다.
async function fetchData() {
  try {
    let result = await someAsyncFunction(); // 비동기 작업 대기
    // 작업 완료 후 처리
  } catch (error) {
    // 에러 발생 시 처리
  }
}
  1. Ember Concurrency: Ember.js 애드온으로, 비동기 작업을 보다 쉽게 관리할 수 있는 기능을 제공합니다. Ember Concurrency를 사용하면 제너레이터 함수를 통해 비동기 작업을 정의하고, 애드온이 작업을 자동으로 관리합니다.
import { task } from 'ember-concurrency';

export default Component.extend({
  fetchData: task(function* () {
    try {
      let result = yield someAsyncFunction(); // 비동기 작업 대기
      // 작업 완료 후 처리
    } catch (error) {
      // 에러 발생 시 처리
    }
  })
});

이외에도 Ember.js에서는 AJAX 요청을 처리하는 Ember.$.ajax 함수를 제공하며, Ember.run.later를 사용하여 비동기 작업을 지연시킬 수도 있습니다.

참고 자료: