Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2017, 12:33
Новичок на форуме
Отправить личное сообщение для Даниленко Денис Посмотреть профиль Найти все сообщения от Даниленко Денис
 
Регистрация: 28.04.2017
Сообщений: 2

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
очередь выполнения функций setInterval imedia Элементы интерфейса 1 31.05.2014 19:22
Порядок выполнения функций YaVolodya jQuery 1 02.11.2013 03:42
Последовательность выполнения функций Алек jQuery 8 21.06.2013 21:48
Порядок выполняемых функций yambbkru Элементы интерфейса 3 14.02.2013 15:15
Последовательность выполнения функций nematod Общие вопросы Javascript 7 25.02.2011 03:16