节点 js 中调用 2 个函数时等待不返回预期值"/>
在节点 js 中调用 2 个函数时等待不返回预期值
我有一个调用 2 个其他函数的 exec 函数,并在解析之前等待它们,但 getData 返回值和 convertToArray 返回未定义。当我调用 convertToArray 函数然后调用 getData 函数时,然后调用 convertToArray 返回值,然后 getData 函数返回未定义。
执行函数:
function exec(resultset) {
return new Promise(async (resolve, reject) => {
try {
var getdata = await getData(resultset);
var convertdoarray = await convertToArray(resultset);
resolve(convertdoarray);
} catch (err) {
reject(err);
}
});
}
getData函数:
function getData(resultset) {
return new Promise((resolve, reject) => {
resultset.toObjectIter((err, rs) => {
if (err) {
reject(err);
return;
}
var rowIter = rs.rows;
var rows = [];
var row = rowIter.next();
while (!row.done) {
rows.push(row.value);
row = rowIter.next();
}
rs.rows = rows;
console.log(rows.length);
resolve(rows);
});
});
}
convertToArray 函数:
function convertToArray(resultset) {
return new Promise((resolve, reject) => {
try {
resultset.toObjArray(function (err, results) {
if (err) {
reject(err);
return err;
} else {
//Returning the result
resolve(results);
}
});
} catch (err) {
reject(err);
return err;
}
});
}
我如何调用 exec 函数:
exports.gues = async function () {
return new Promise((resolve, reject) => {
const results = await exec(resultset)
.then((e) => {
resolve(e);
return;
})
.catch((err) => reject(err));
});
}
我期待在 exec 函数中调用两个函数时,它等待 1 个函数,获取期望值然后调用第二个函数,获取期望值然后返回。
此外,如果 exec 函数花费的时间超过 2 分钟,我希望在调用 exec 函数时返回错误。
回答如下:我想你可以用
return
代替resolve
:
const results=await exec(resultset)
.then((e) => e)
.catch((err) => console.error(err));
更多推荐
在节点 js 中调用 2 个函数时等待不返回预期值
发布评论