gpt4 book ai didi

javascript - return true 实际上使用 async 返回 undefined

转载 作者:行者123 更新时间:2023-11-30 06:51:39 26 4
gpt4 key购买 nike

如果该值不存在,我正在尝试做一些事情,以便我可以更新它。但是 isExist 函数总是返回 undefined。我能用这个做什么?

引用:Ero 已经定义。

async.forEachOf(idArray, function(value, key, cb) {
rp(baseURL + value)
.then(function(json) {
if (!isExist(json)) {
// do something
} else {
console.log(isExist(json), "It's not video or exists");
}
})
.catch(function(err) {
console.error(err);
})
cb();
}, function() {
res.status(200)
});
});

function isExist(data) {
let parsedData = JSON.parse(data);
if (parsedData.items[0].type === 'Video') {
Ero.find({
videoUri: parsedData.items[0].url_mp4
}, function(err, docs) {
if (docs.length) {
return true;
} else {
return false;
}
})
} else {
return false;
}
}

最佳答案

让我们看看您的 isExist 函数。

function isExist(data) {
let parsedData = JSON.parse(data);
if (parsedData.items[0].type === 'Video') {
Ero.find({
videoUri: parsedData.items[0].url_mp4
}, function(err, docs) {
if (docs.length) {
return true;
} else {
return false;
}
})
} else {
return false;
}
}

在该函数中,您有两个条件分支。当条件为 false 时,else block 将运行 – 这将返回 false。当条件为 true 时,第一个 block 将运行,但是没有 return 语句,因此隐式返回 undefined

你说“为什么它没有返回语句?”我很确定我有一个

看起来你这里有一个。

if (docs.length) {
return true;
} else {
return false;
}

但是看看它从哪个函数返回。它只是从传递给 Ero.find 的回调函数中返回,而不是从 isExist 中返回。

你问“我能做些什么呢?”

我假设 Ero.find 是一个异步函数,因此 isExist 也会变成一个异步函数。要在 JavaScript 中执行异步函数,您可以使用 Promisesasync functions .

这里有一些示例代码,说明 isExist 可能看起来像一个 Promise。

function isExist(data) {
/**
* `isExist` returns a Promise. This means the function _promises_ to have a value resolved in the future.
*/
return new Promise((resolve, reject) => {
let parsedData = JSON.parse(data);
if (parsedData.items[0].type === 'Video') {
Ero.find({
videoUri: parsedData.items[0].url_mp4
}, function(err, docs) {
if (docs.length) {
/**
* Once `Ero.find` has completed, `resolve` `isExist` with a value of `true`, otherwise `resolve` `isExist` with a value of `false`.
*/
resolve(true);
} else {
resolve(false);
}
})
} else {
/**
* You can resolve a Promise even without performing an asynchronous operation.
*/
resolve(false);
}
});
}

进一步阅读

关于javascript - return true 实际上使用 async 返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187045/

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