В функции run1
случайное значение генерируется и сохраняется в random_var
, await
используется для задержки, а затем random_value
разрешается.
При асинхронном запуске run1
с использованием Promise.all
random_var
равно изменено при регистрации после оператора await
, как показано в демонстрационном фрагменте кода
main()
async function main() {
await Promise.all([run1(), run1(), run1()]).then(value => {
console.log({ values: value })
})
}
async function run1() {
return new Promise(async (resolve, reject) => {
random_var = makeid(6)
console.log('Logging 1st time has different values', random_var)
await new Promise(resolve => setTimeout(resolve, 500))
console.log('Logging 2nd time has same values', random_var)
resolve(random_var)
})
}
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}