Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2017, 15:40
Новичок на форуме
Отправить личное сообщение для Даниленко Денис Посмотреть профиль Найти все сообщения от Даниленко Денис
 
Регистрация: 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 в методах обязательно. Заранее спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задать порядок выполнения промисов Spirtikys Общие вопросы Javascript 6 28.08.2016 21:23
Последовательность выполнения функций extrasens Общие вопросы Javascript 3 06.11.2015 15:22
оптимизация выполнения функций skrudjmakdak Общие вопросы Javascript 3 16.05.2015 21:16
Порядок выполнения функций YaVolodya jQuery 1 02.11.2013 01:42
Порядок выполнения команд shooretz jQuery 2 23.06.2009 17:13