Как реализовать динамический promise?

259
25 июня 2017, 14:53

требуется последовательно выполнить несколько sql запросов к MySQL

вызов команд реализую через Promise

но встал вопрос как сделать универсальный метод обрабатывающий последовательно массив запросов?

более конктретно как на Promise реализовать такую цепочку вызовов?

class myClass() {
    constructor() {
        this.list = [sq1,sql2,sql3];
    }   
    function myFunc(i) {
        ...
        if(++i < list.length) {
            if(...) list.push(newSQL); <= {1} <=
            this.myFunc(i)
        }
    }
}
let m = new MyClass();
m.myFunct(0);

UPDATE

сейчас так реализована одна итерация, вопрос как последовательно обработать весь список:

    myBuy(sql) {
        return new Promise((resolve, reject) => {
            ...
            let promise = global._query(sql);
            promise
            .then(
                data=>resolve(data),
                err=>reject(err)
            )
        })
    }

listSQL.forEach((e) => 
    myClass.myBuy(e)
)    
Answer 1

Можно что-то вроде этого "наваять", но я бы рекомендовал использовать готовые библиотеки.
Когда-то для подобных вещей я использовал async

let list = [ 
  Promise.resolve(1), 
  Promise.resolve(2), 
]; 
 
const add = (p, newP) =>  
  p.then(results => newP.then(newRes => { 
    results.push(newRes); 
    return results; 
  })); 
 
 
let p = Promise.resolve([]); 
list.forEach(newP => p = add(p, newP)); 
 
p = add(p, Promise.resolve(3)); 
p = add(p, Promise.resolve(4)); 
 
p.then(results => console.log(results)); 
 
p = add(p, Promise.resolve(5)); 
p.then(results => console.log(results));

READ ALSO
I can&#39;t call activity from Adobe Native Extension [требует правки]

I can't call activity from Adobe Native Extension [требует правки]

I have some issue with calling activity from FREFunctionI had many errors which I could fix but now my app crashes without any erorrs

349
Альтернатива VLCJ Java

Альтернатива VLCJ Java

Подскажите хорошую, удобную альтернативу библиотеке vlcj для медиаплеера JFrame

480
Метод добавления в строку символа в определенную позицию

Метод добавления в строку символа в определенную позицию

Я не смог найти метод, который добавляет символ в String на заданную позициюНе в массив String

269
Обработка голоса

Обработка голоса

Имеется запись_голосаogg, необходимо программным способом наложить какие-нибудь эффекты, чтобы на выходе получился обработанный файл

340