Javascript Promise return pending不是使用async/await的函数中的值
我有一个从目录中读取文件路径并返回它们的代码。 我使用async/await来调用函数来实现这一点,但我得到的不是目标值Javascript Promise return pending不是使用async/await的函数中的值,javascript,vue.js,Javascript,Vue.js,我有一个从目录中读取文件路径并返回它们的代码。 我使用async/await来调用函数来实现这一点,但我得到的不是目标值 function readdirAsync(path) { return new Promise((resolve, reject) => { fs.readdir(path, (err, result) => { if (err) { reject(err); } else { resolve(
function readdirAsync(path) {
return new Promise((resolve, reject) => {
fs.readdir(path, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
}).then(res => {
const versions = res.map(filename => match(/^[\d]+(\.+\d+)+/g, filename)[0]);
return versions;
});
}
async function getVersions() {
const final = await readdirAsync(require('path').join('src/versions/'));
return final;
}
const versionsList = getVersions().then(res => res);
console.log(versionsList);
wait
只等待在异步函数中解析承诺
getVersions
是一个async
函数,因此它返回一个promise(当它解析时,会用值final
解析)
您没有在这里等待(也不能,因为您不在异步函数中),因此您得到
then()
方法的返回值…这就是承诺。wait
只等待在异步函数中解析承诺
getVersions
是一个async
函数,因此它返回一个promise(当它解析时,会用值final
解析)
您没有在这里等待(也不能,因为您不在异步函数中),因此您得到了
then()
方法的返回值…这就是承诺。getVersions()。然后(res=>console.log(res));试试这个。它可以正常工作,但我需要将versionList
设置为res
@ZeyadEtman我已经回滚了您上次的编辑,因为您不应该更改现有的问题,这样会使已经给出的答案无效。如果你认为你的问题不是重复的,你可以编辑你的问题来解释你的问题的不同之处。如果您有基于此问题和给出的答案的其他后续问题,您可以提出新问题并将此问题链接到其中。通过在stackoverflow上搜索,或者在询问one.getVersions()时检查相关问题,您可以找到这些问题的部分或全部答案。然后(res=>console.log(res));试试这个。它可以正常工作,但我需要将versionList
设置为res
@ZeyadEtman我已经回滚了您上次的编辑,因为您不应该更改现有的问题,这样会使已经给出的答案无效。如果你认为你的问题不是重复的,你可以编辑你的问题来解释你的问题的不同之处。如果您有基于此问题和给出的答案的其他后续问题,您可以提出新问题并将此问题链接到其中。您可以通过在stackoverflow上搜索或在提问时检查相关问题来找到这些问题的部分或全部答案。好的,但是如果我需要将versionsList
设置为res
值,我该怎么办?@ZeyadEtman-“因为您不在异步函数中”请,编辑后您可以检查代码吗?@ZeyadEtman-const final=readdirAsync
仍然不是wait
ing,并且仍然不在async
函数中(因此它仍然不能wait
)。对不起,您可以进一步帮助我吗?好的,但是如果我需要将versionlist
设置为res
值,我该怎么办?@ZeyadEtman-“因为您不在异步函数中”请在编辑后检查代码好吗?@ZeyadEtman-const final=readdirAsync
仍然没有等待,并且仍然不在async
函数中(因此它仍然不能wait
)。对不起,您能进一步帮助我吗?
const versionsList = getVersions().then(res => res);