Обещание без ожидания - PullRequest
1 голос
/ 13 июля 2020

Возможно ли выполнить обещание без функции ожидания? Я читал, что это возможно с помощью функции setTimeout, но я не знаю, сколько времени потребуется, чтобы ответить. Когда я пишу в console.log, кажется, что он работает даже без функции ожидания, мне было интересно, как это работает с console.log, но не при назначении результата

const shareName="myshare";
const shareClient = serviceClient.getShareClient(shareName);
let shareExists:boolean;
//The below line doesn't return the result if I don't use await and shareExists will be undefined
shareClient.exists().then((result)=>{shareExists = result;}).catch((error)=>console.log(error.message));

//But when I write to console.log, it works fine without await, I can see the result in console
shareClient.exists().then((result)=>console.log(result)).catch((error)=>console.log(error.message))

У меня также возникают проблемы с разрешением результата в foreach l oop. В функции then я пытаюсь объединить загруженные файлы, но получаю пустой список файлов.

let fileList = "";
files.forEach(file => {
    let bufferContent = Buffer.from(file.fileContent,'base64');
    fileClient.uploadData(bufferContent)
        .then(()=>{fileList+=file.fileName;fileList += ";"})
        .catch((error)=>{this.showError(error,"processFile")});
});

Я попытался добавить async / await, как показано ниже, но такое же поведение.

files.forEach(async file => {
    let bufferContent = Buffer.from(file.fileContent,'base64');
    await fileClient.uploadData(bufferContent)
        .then(()=>{fileList+=file.fileName;fileList += ";"})
        .catch((error)=>{this.showError(error,"processFile")});
});

Кто-нибудь может мне помочь? Спасибо

...