2016-04-25 5 views
2

ich Versprechen bin mit mit knexjs, aber warum kommen Sie versprechen nicht nacheinander ausgeführt, bekam Zeilen gelöscht, nachdem eingefügt:Drossel Versprechen join läuft nicht in Folge

exports.seed = function(knex, Promise) { 
    return Promise.join(
    knex('states').del(), 
    knex('states').insert([ 
    { 
     'id': 1, 
     'name': 'Georgia' 
    }, 
    { 
     'id': 2, 
     'name': 'Tennessee' 
    } 
    ]); 
); 
}; 

Antwort

4

anmelden und verspricht, die parallel laufen, nicht in der Reihenfolge. "For coordinating multiple concurrent discrete promises." Da Sie vor dem Einfügen löschen möchten, sind sie nicht gleichzeitig.

Versprechen werden, sobald sie also denke ich, erstellt werden ausgeführt dies ein Fall für eine reguläre then ist:

exports.seed = function(knex, Promise) { 
    return knex('states').del() 
    .then(function() { 
     return knex('states').insert([ 
     { 
      'id': 1, 
      'name': 'Georgia' 
     }, 
     { 
      'id': 2, 
      'name': 'Tennessee' 
     } 
    ]); 
); 
}; 

Of wenn Sie wie ES6 ist und Dinge in einer Reihe aufstellen:

exports.seed = (knex) => { 
    return B.resolve() 
    .then(() => knex('states').del()) 
    .then(() => knex('states').insert([ 
     { 
     'id': 1, 
     'name': 'Georgia' 
     }, 
     { 
     'id': 2, 
     'name': 'Tennessee' 
     } 
    ])); 
}