вар ожидание = функция () { вар задача = функция () { console.log ( '执行完成' ); } SetTimeout (задача, 2000 ); } Ждать ();
Теперь некоторые особенно сложная операция, код может быть много внутри после выполнения задачи будет завершено. Так, как это сделать. Если вы будете продолжать писать в следующих не является проблемой, но не достигает открытого закрытого принципа. За это, вероятно, изменится в несколько раз, а затем много кода. Модификации открытой, чтобы расширить игру. Мы должны понимать, закрытой для модификации, открытой для расширения.
Функция 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-интерфейс можно разделить на две категории, разные намерения
Функция 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' ) });