Promise.join 不能使用箭头函数
Promise.join not working with arrow function
我一直在研究 returns 几个数据库表的所有值的函数。我正在尝试主动采用稳定的 es6 功能,这似乎是箭头功能的好机会。我正在使用 bluebird 作为我的 ORM 的承诺和续集(returns bluebird 承诺他们的数据库查询)
/**
* This does not work on node v4.2.0
*/
'use strict';
const Promise = require('bluebird');
const models = require('../database');
const resource = {
browse: function browse() {
return Promise.join(
() => models.table_one.findAll(),
() => models.table_two.findAll(),
() => models.table_three.findAll(),
function(table_one, table_two, table_three) {
const response = {
table_one,
table_two,
table_three,
};
return response;
});
},
};
module.exports = resource;
这行不通
/**
* But this does
*/
'use strict';
const Promise = require('bluebird');
const models = require('../database');
const resource = {
browse: function browse() {
function getTableOne() {
return models.table_one.findAll();
}
function getTableTwo() {
return models.table_two.findAll();
}
function getTableThree() {
return models.table_three.findAll();
}
return Promise.join(
getTableOne(),
getTableTwo(),
getTableThree(),
function(table_one, table_two, table_three) {
const response = {
table_one,
table_two,
table_three,
};
return response;
});
},
};
module.exports = resource;
我也尝试过将对模型的调用包装在花括号中并显式返回它们。这不是一个重要的优先事项,因为我有一个解决方法,但我希望获得对最新功能的更好理解。谢谢
Promise.join
需要一个或多个 promises,而不是函数。
Promise.join(getTableOne(), ...)
调用 getTableOne
并将 return 值(一个承诺)传递给 Promise.join
.
但是
Promise.join(() => models.table_one.findAll(), ...)
将函数本身传递给 Promise.join
,不是 promise。它不调用函数。
这里不需要箭头函数:
Promise.join(models.table_one.findAll(), ...)
我一直在研究 returns 几个数据库表的所有值的函数。我正在尝试主动采用稳定的 es6 功能,这似乎是箭头功能的好机会。我正在使用 bluebird 作为我的 ORM 的承诺和续集(returns bluebird 承诺他们的数据库查询)
/**
* This does not work on node v4.2.0
*/
'use strict';
const Promise = require('bluebird');
const models = require('../database');
const resource = {
browse: function browse() {
return Promise.join(
() => models.table_one.findAll(),
() => models.table_two.findAll(),
() => models.table_three.findAll(),
function(table_one, table_two, table_three) {
const response = {
table_one,
table_two,
table_three,
};
return response;
});
},
};
module.exports = resource;
这行不通
/**
* But this does
*/
'use strict';
const Promise = require('bluebird');
const models = require('../database');
const resource = {
browse: function browse() {
function getTableOne() {
return models.table_one.findAll();
}
function getTableTwo() {
return models.table_two.findAll();
}
function getTableThree() {
return models.table_three.findAll();
}
return Promise.join(
getTableOne(),
getTableTwo(),
getTableThree(),
function(table_one, table_two, table_three) {
const response = {
table_one,
table_two,
table_three,
};
return response;
});
},
};
module.exports = resource;
我也尝试过将对模型的调用包装在花括号中并显式返回它们。这不是一个重要的优先事项,因为我有一个解决方法,但我希望获得对最新功能的更好理解。谢谢
Promise.join
需要一个或多个 promises,而不是函数。
Promise.join(getTableOne(), ...)
调用 getTableOne
并将 return 值(一个承诺)传递给 Promise.join
.
但是
Promise.join(() => models.table_one.findAll(), ...)
将函数本身传递给 Promise.join
,不是 promise。它不调用函数。
这里不需要箭头函数:
Promise.join(models.table_one.findAll(), ...)