Javascript 为什么续约中还承诺
我是新来的续集。因此,我正在编写一个查询,在其中映射参数并在数据库中找到它们。但我得到的只是一个承诺。 这是我的密码Javascript 为什么续约中还承诺,javascript,object,promise,sequelize.js,sequelize-cli,Javascript,Object,Promise,Sequelize.js,Sequelize Cli,我是新来的续集。因此,我正在编写一个查询,在其中映射参数并在数据库中找到它们。但我得到的只是一个承诺。 这是我的密码 findData(params) { return params.map(product => { return Model.Stock.findAll({ raw: true }) .then(stocks => stocks.map(stock => ({ success: true, data: stock })))
findData(params) {
return params.map(product => {
return Model.Stock.findAll({ raw: true })
.then(stocks => stocks.map(stock => ({ success: true, data: stock })))
.catch(err => ({ success: true, error: err.toString() }));
});
},
我希望得到物体,我该怎么做
0:Promise
_bitField:33554432
_fulfillmentHandler0:undefined
_promise0:undefined
_receiver0:undefined
_rejectionHandler0:Array(4)
_trace:CapturedTrace
__proto__:Object
length:1
__proto__:Array(0)
为了返回对象,我应该更改什么?我建议阅读一些关于承诺的内容,以及如何有效地使用它们。你可以在附近找到许多例子 在您的特定情况下,查看代码,您确实收到了一个对象。 看看:
.then(stocks => stocks.map(stock => ({ success: true, data: stock })))
让我们更进一步:
stocks => stocks.map
股票应该(以名称结尾)有一个对象数组
在您的情况下,您可以按如下方式使用它:
findData(params).then(function(yourObjects) {
//do something here...
});
解释(为什么它会回归承诺):
findData(params) {
return params.map(product => { // <-------- 2. So this will return array of promise objects
return Model.Stock.findAll({ raw: true }) //<------- 1. This will always returning promise , nature of sequlize
.then(stocks => stocks.map(stock => ({ success: true, data: stock })))
.catch(err => ({ success: true, error: err.toString() }));
});
},
findData(params).then(your_data => { ..... })
然后您可以获得如下数据:
findData(params) {
return params.map(product => { // <-------- 2. So this will return array of promise objects
return Model.Stock.findAll({ raw: true }) //<------- 1. This will always returning promise , nature of sequlize
.then(stocks => stocks.map(stock => ({ success: true, data: stock })))
.catch(err => ({ success: true, error: err.toString() }));
});
},
findData(params).then(your_data => { ..... })