JQuery отсроченного приложение

Мы говорим, после того, как jquery1.5 используется с отсрочкой, а затем отложено в конце концов, что, посмотрите на пример
вар ожидание = функция () {
  вар задача = функция () { 
    console.log ( '执行完成' ); 
  } 
  SetTimeout (задача, 2000 ); 
} 
Ждать ();

Теперь некоторые особенно сложная операция, код может быть много внутри после выполнения задачи будет завершено. Так, как это сделать. Если вы будете продолжать писать в следующих не является проблемой, но не достигает открытого закрытого принципа. За это, вероятно, изменится в несколько раз, а затем много кода. Модификации открытой, чтобы расширить игру. Мы должны понимать, закрытой для модификации, открытой для расширения.

 

Чтобы решить эту проблему, мы вводим отложенное JQuery
Функция WaitHandle () {
  вар ОТД .Deferred = $ (); // Создать отсроченные объекты 

  Var Ждание = функция (DTD) { // требует прохождения объекта откладывается 
    вар Task = функция () { 
      console.log ( «завершение выполнения ' ); 
      dtd.resolve (); // для асинхронной задачи был завершена 
      // dtd.reject (); // указывающих на асинхронных задачах выходят из строя или ошибка 
    } 
    SetTimeout (задача, 2000 );
    вернуть ОТД; // попросили вернуться к отложенным местам что 
  } 

  // Обратите внимание , что это значение должно быть возвращено 
  вернуться на ожидания (DTD); 
}

И есть три функции, первая функция представляет собой слой WaitHandle, второй слой является функцией ожидания, функция третьего слоя является задачей. Есть два возвращения, переходят в первом сделали. Затем последовательность обработки и возвращает ОТД. И, наконец, как использовать

 

вар ш = WaitHandle (); 
w.then ( функция () { 
  console.log ( 'success1' ); 
}, функция () { 
  console.log ( 'ошибка' ); 
}) 
.then ( функция () { 
  console.log ( 'success2' ) 
} , функция () { 
  console.log ( 'Error2' ) 
}); 
// 还有w.done和w.fail

 

Резюме, ОТД API-интерфейс можно разделить на две категории, разные намерения

Первая категория: dtd.resolve dtd.reject
Вторая категория: dtd.then dtd.done dtd.fail
Эти два типа должны быть разделены, иначе последствия будут серьезными!
В приведенном выше примере, код dtd.reject окончательной производительности (). Попробуйте последствия. ,
Функция WaitHandle () {
  вар ОТД .Deferred = $ (); // Создать отсроченные объекты 

  Var Ждание = функция (DTD) { // требует прохождения объекта откладывается 
  вар Task = функция () { 
    console.log ( «завершение выполнения ' ); 
    dtd.resolve (); // для асинхронной задачи был завершена 
    // dtd.reject (); // указывающих на асинхронных задачах выходят из строя или ошибка 
  } 
  SetTimeout (задача, 2000 );
    вернуть ОТД; // попросили вернуться к отложенным местам что 
  } 

  // Обратите внимание , что это значение должно быть возвращено 
  вернуться на ожидания (DTD); 
} 

уаг W =WaitHandle (); 
w.reject () // 非常不老实的做法 
w.then ( функция () { 
  console.log ( 'success1' ); 
}, функция () { 
  console.log ( 'ошибка' ); 
}). Затем ( функция () { 
  console.log ( 'success2' ) 
}, функция () { 
  console.log ( 'Error2' ) 
});

 

Так как решить эту проблему, это приводит к наиболее важной роль очень похоже обещание;
Функция WaitHandle () {
  вар ОТД .Deferred = $ (); // Создать отсроченные объекты 

  Var Ждание = функция (DTD) { // требует прохождения объекта откладывается 
    вар Task = функция () { 
      console.log ( «завершение выполнения ' ); 
      dtd.resolve (); // для асинхронной задачи было завершено 
      // dtd.reject (); // что указывает на асинхронные задачи , выходят из строя или ошибки 
    } 
    SetTimeout (задача, 2000 );
    возвращение dtd.promise (); // где Назад Promise, а не возвращение к deferreds 
  } 

  // Обратите внимание , что это значение должно быть возвращено 
  вернуть ожидание (DTD); 
}


вар ш = WaitHandle (); 
w.then ( функция () { 
  console.log ( 'success1' ); 
}, функция () { 
  console.log ( 'ошибка' ); 
}). Затем ( функция () { 
  console.log ( 'success2' ) 
} , функция () { 
  console.log ( 'Error2' ) 
});
Во время вызова этого метода обещание (), но уже предложил первоначальную концепцию обещанию, это jquery1.5 время. После возвращения обещания, на этот раз к студентам, чтобы изменить б w.reject ошибки (). После возвращения обещания, то этот метод может только слушать, сделано, не в состоянии, чтобы не изменить решение, отказаться. Право контролировать это только другие студенты.

рекомендация

отwww.cnblogs.com/wzndkj/p/10987549.html