Promise在函数完成之前解析

时间:2014-07-20 05:07:10

标签: javascript promise

在以下代码中,attenCalendar.refresh();方法调用一系列请求/响应并异步执行。需要完成才能attenCalendar.getItem成功。我使用promises来解决它,但显然在刷新完成之前会保证解析并导致attenCalendar.getItem返回null。 如何阻止序列直到refresh()完成?

yield promise_attendee1_assert();

function attendeeRefresh(){
  let deferred = Promise.defer();
  attenCalendar.refresh();
  deferred.resolve("refreshed");
  return deferred.promise;
}

function promise_attendee1_assert(){
  let deferred = Promise.defer();
  let promise = attendeeRefresh();

  promise.then(function onRefreshed(refreshNote) {
    dump("refreshedattendee"+refreshNote);
    attenCalendar.getItem(attendItem.id, {
         onGetResult: function onGetResult(cal, stat, type, detail, count, items) {
             retrievedItem = items[0];
//prints null
             dump("\nattendeeitem:"+retrievedItem.title);
         },
         onOperationComplete: function() {
          deferred.resolve();
         }
       });
  });

  return deferred.promise;
} 

0 个答案:

没有答案