gpt4 book ai didi

javascript - Promise.all(...).spread 不是并行运行 Promise 时的函数

转载 作者:IT老高 更新时间:2023-10-28 23:08:55 28 4
gpt4 key购买 nike

我正在尝试使用 sequelize 并行运行 2 个 Promise,然后在 .ejs 模板中呈现结果,但我收到此错误:

 Promise.all(...).spread is not a function

这是我的代码:

var environment_hash = req.session.passport.user.environment_hash;
var Template = require('../models/index').Template;
var List = require('../models/index').List;

var values = {
where: { environment_hash: environment_hash,
is_deleted: 0
}
};

template = Template.findAll(values);
list = List.findAll(values);


Promise.all([template,list]).spread(function(templates,lists) {

res.render('campaign/create.ejs', {
templates: templates,
lists: lists
});

});

我该如何解决这个问题?

最佳答案

因为它解决了您的问题,所以我会将我的评论作为答案。

.spread() 不是标准的 promise 方法。它在 Bluebird Promise 库中可用。您包含的代码没有显示这一点。三种可能的解决方案:

直接访问数组值

您可以只使用 .then(results => {...}) 并以 results[0]results[1] 的形式访问结果.

包括 Bluebird Promise 库

您可以包含 Bluebird promise 库,以便您可以访问 .spread()

var Promise = require('bluebird');

在回调参数中使用解构

在最新版本的 nodejs 中,您还可以使用解构赋值来消除对 .spread() 的需求,如下所示:

Promise.all([template,list]).then(function([templates,lists]) {
res.render('campaign/create.ejs', {templates, lists});
});

关于javascript - Promise.all(...).spread 不是并行运行 Promise 时的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42750254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com