У меня есть функция async / await, которая не присваивает объекту, и я не знаю почему. Я утешаю результаты, и они кажутся кошерными, но когда они достигают фактического назначения объекта, они не присваиваются. Я объясню ниже:
Так вот код:
Это просто вспомогательная функция для asyncForEach:
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
Тогда у меня есть следующее:
const asyncFunc = async () => {
await asyncForEach(tempPosts, async (tempPost) => {
if (tempPost.fileName!=''){
console.log('tempPosts[tempPosts.indexOf(tempPost)]: ',
tempPosts[tempPosts.indexOf(tempPost)])
console.log("await fsPromise.readFile(__dirname+'/../picFolder/sharp/'+tempPost.fileName)",
await fsPromise.readFile(__dirname+'/../picFolder/sharp
/'+tempPost.fileName))
tempPosts[tempPosts.indexOf(tempPost)]['data'] =
await fsPromise.readFile(__dirname+'/../picFolder/sharp/'+tempPost.fileName)
console.log('after assignment and value of tempPosts in asyncForEach: ', tempPosts)
}
})
}
Итак, вот результаты трех журналов javascript:
console.log('tempPosts[tempPosts.indexOf(tempPost)]: ',
tempPosts[tempPosts.indexOf(tempPost)])
Результаты в
tempPosts[tempPosts.indexOf(tempPost)]: { flags: 0,
fileName: '1552601360288&&travelmodal.png',
comments: [],
_id: 5c8ad110ef45f6e51a323a18,
body: 'asdasdfasdf',
created: 2019-03-14T22:09:20.427Z,
__v: 0 }
Что представляется правильным.
И
console.log("await fsPromise.readFile(__dirname+'/../picFolder/sharp/'+tempPost.fileName)",
await fsPromise.readFile(__dirname+'/../picFolder/sharp
/'+tempPost.fileName))
Дает ...
await fsPromise.readFile(__dirname+'/../picFolder/sharp/'+tempPost.fileName)
<Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 c8 00 00 00 62 08 06 00 00 00 15 df 9c 16 00 00 00 09 70 48 59 73 00 00 16 25 00 00 16 25 01 ... >
Какая действительно длинная строка буфера данных мне нужна. Круто.
ОДНАКО
after assignment and value of tempPosts in asyncForEach: [ { flags: 0,
fileName: '1552601360288&&travelmodal.png',
comments: [],
_id: 5c8ad110ef45f6e51a323a18,
body: 'asdasdfasdf',
created: 2019-03-14T22:09:20.427Z,
__v: 0 },
{ flags: 0,
fileName: '1552601320137&&Screen Shot 2019-03-09 at 10.03.09 AM.png',
comments: [],
_id: 5c8ad0e8ef45f6e51a323a17,
body: 'adf',
created: 2019-03-14T22:08:40.336Z,
__v: 0 } ]
Что? Мой вызов Object['newKey'] = await fsPromise.readFile(yadayada)
, где await fsPromise.readFile(yadayada)
показано для работы в console.log. Почему я не могу этого сделать, это не имеет смысла.