Порядок выполнения функций с Promise.
Здравствуйте.
Вначале приведу код. Вызов главной функции: function ChooseUserCerts() { var StoreObj = new ClassStore(); StoreObj.OpenStore(); var CertCount = StoreObj.GetCertCount(); alert(CertCount); } Вызов классов с promise: function ClassStore() { this.MyStore = 0; } ClassStore.prototype.OpenStore = function () { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args) { this.MyStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store"); yield this.MyStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE, cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED); var CertificatesObj = yield this.MyStore.Certificates; var Count = yield CertificatesObj.Count; if (Count == 0) { alert("Certificate not found: "); } alert(Count); }, resolve, reject); }); } ClassStore.prototype.GetCertCount = function () { return new Promise(function(resolve, reject){ cadesplugin.async_spawn(function *(args) { var CertificatesObj = yield this.MyStore.Certificates; var Count = yield CertificatesObj.Count; alert(Count); }, resolve, reject); }); return Count; } Суть в том, что я вызываю в главной функции 2 метода: StoreObj.OpenStore(); // 1 метод StoreObj.GetCertCount(); // 2 метод Второй метод не может работать, пока 1 не закончит свою работу. Так как он юзает переменную из 1 метода. А получается так, что из за Promise второй метод срабатывает быстрее первого. Совмещать их нельзя! Что можете посоветовать? Использование Promise в методах обязательно. Заранее спасибо! |
Часовой пояс GMT +3, время: 04:06. |