Javascript 当Sequelize查询是一个承诺时,为什么我需要一个承诺?

Javascript 当Sequelize查询是一个承诺时,为什么我需要一个承诺?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,如果Contracts.findAll是一个承诺,为什么我需要在这方面做出承诺?或者在这两个文件之间的交互中我需要承诺吗?(注意:我确实需要单独的文件,但是我需要promise和async/await)吗 app.js (async () => { var results2 = await contracts.get(); console.log(results2); })(); exports.get = function () { return new Pro

如果
Contracts.findAll
是一个承诺,为什么我需要在这方面做出承诺?或者在这两个文件之间的交互中我需要承诺吗?(注意:我确实需要单独的文件,但是我需要
promise
async/await
)吗

app.js

(async () => {
    var results2 = await contracts.get();
    console.log(results2);
})();
exports.get = function () {
    return new Promise(function (resolve, reject) {
        Contract.findAll().then(contracts => {
            resolve(contracts[0].AccountNo_Lender)
        });
    });
};
service.js

(async () => {
    var results2 = await contracts.get();
    console.log(results2);
})();
exports.get = function () {
    return new Promise(function (resolve, reject) {
        Contract.findAll().then(contracts => {
            resolve(contracts[0].AccountNo_Lender)
        });
    });
};

如果
Contract.findAll()
已返回承诺,则不需要包装承诺

以下代码等效:

exports.get = function () {
  return Contract.findAll().then(
    contracts => contracts[0].AccountNo_Lender
  );
};

但是我仍然需要
app.js
中的
async/await
,对吗?@Rod如果你想使用
await
,那么你必须使用
async
。但是你也可以在你的
app.js
contracts.get()中使用
then
。然后(results2=>console.log(results2)})
在一个承诺周围包装一个
新承诺(函数(resolve,reject){
,这是一个反模式。如果不处理被包装的承诺的错误案例,情况会更加糟糕。