Здравствуйте.
Вначале приведу код.
Вызов главной функции:
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 в методах обязательно. Заранее спасибо!