Bluebird promise join 的顺序不是 运行
Bluebird promise join is not running in sequence
我在 knexjs 中使用 promise,但为什么 promise join 不是 运行 顺序,插入后行被删除:
exports.seed = function(knex, Promise) {
return Promise.join(
knex('states').del(),
knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]);
);
};
Join 是为了承诺 运行 是并行的,而不是顺序的。 “For coordinating multiple concurrent discrete promises。”因为你想在插入之前删除它们不是并发的。
Promise 在创建后立即执行,所以我认为这是常规 then
:
的情况
exports.seed = function(knex, Promise) {
return knex('states').del()
.then(function() {
return knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]);
);
};
如果你喜欢 ES6 并准备好一切:
exports.seed = (knex) => {
return B.resolve()
.then(() => knex('states').del())
.then(() => knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]));
}
我在 knexjs 中使用 promise,但为什么 promise join 不是 运行 顺序,插入后行被删除:
exports.seed = function(knex, Promise) {
return Promise.join(
knex('states').del(),
knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]);
);
};
Join 是为了承诺 运行 是并行的,而不是顺序的。 “For coordinating multiple concurrent discrete promises。”因为你想在插入之前删除它们不是并发的。
Promise 在创建后立即执行,所以我认为这是常规 then
:
exports.seed = function(knex, Promise) {
return knex('states').del()
.then(function() {
return knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]);
);
};
如果你喜欢 ES6 并准备好一切:
exports.seed = (knex) => {
return B.resolve()
.then(() => knex('states').del())
.then(() => knex('states').insert([
{
'id': 1,
'name': 'Georgia'
},
{
'id': 2,
'name': 'Tennessee'
}
]));
}