

メソッドの中にPromiseを返す処理があり、 その処理の中でループの処理があります。  
そのループの中でデータベースに登録をし、その結果作成したbookデータのIDを取得し、peopleオブジェクトにマージしたいと思っています。  
理想は①、②、③と順に処理を行って欲しいのですが、②は非同期で①、③となった後に②の処理が呼ばれます。
Promiseの処理の中のループ処理の中で再度Promiseを使って同期的に値を取り出したい場合、どういうPromiseを書けばいいのでしょうか？
お知恵をお貸しください。

[code]

    update: function(items) {
      return new Promise(function(resolve, reject) {
        knex.transaction(function (t) {
          Promise.bind(result).then(function() {
            return 処理１
          }).then(function() {
            return 処理２
          }).then(function() {
            var promises = items.map(function (item) {
              ①.. var book = _.pick(item, 'name', 'bookNumber', 'author');
              ②.. var bookId = insertBook(t, book);
              ③.. var people = _.pick(item, 'familyName', 'firstNumber', 'tel');
              var values = _.merge({}, people,  {book: bookId});
              return AModel.validateFor(values);
            });
            return Promise.all(promises);
          }).then(function(items) {
            return 処理4
          }).then(function() {
            t.commit(this);
          }).catch(t.rollback);
        }).then(function (res) {
          resolve(res);
        }).catch(function(err) {
          reject(err);
        });
      });
    }
    
    function insertBook(t, book){
      return Promise.bind(this).then(function () {
        return Book.columnizeFor(book);
      }).then(function (value) {
        return knex('book').transacting(t).insert(value, "id");
      });
    }
    
[/code]


CC BY-SA 3.0
2016-05-31T07:08:53.807
25333
2016-05-31T07:08:53.807
15499
question
sails.js promise
Promiseの処理の中でループ処理があり、そのループ処理の中で再度Promiseを使いたい