async lsEntered(){
if(this.service.wd == '')
{
await basic((this.service.wd));
}
else
{
await basic(('/'+this.service.wd));
}
this.files = await JSON.parse(localStorage.getItem('FILENAMES'));
var filesList = document.getElementById(this.trackLine.toString());
var li;
for (var i = 0; i < this.files.length; i++) {
li = document.createElement('li');
li.appendChild(document.createTextNode(this.files[i].name));
filesList.appendChild(li);
}
localStorage.clear();
}
我想等到基本完成并且JSON.parse在显示DOM中的值之前完成。我每次都得到前一个呼叫的值,这告诉我异步不起作用。公平地说,我没有大量的TS经验。
编辑:这是基本的,我希望不必处理它,因为它是一个javascript函数,并且很容易集成到这个应用程序中。
var basic = function (path) {
var ACCESS_TOKEN = '';
var dbx = new Dropbox({ accessToken: ACCESS_TOKEN });
dbx.filesListFolder({ path: path })
.then(function (response) {
localStorage.setItem('FILENAMES',JSON.stringify(response.entries));
console.log(response);
})
.catch(function (error) {
console.error(error);
});
return false;
}
答案 0 :(得分:3)
let myPromise = new Promise((resolve, reject) => {
// Work you want to execute
resolve("I am done");
});
myPromise.then((successMessage) => {
// successMessage is whatever we passed in the resolve(...) function above.
console.log("Yay! " + successMessage);
});
答案 1 :(得分:3)
您只能await
承诺 1 且basic
未返回承诺。你需要做
return dbx.filesListfolder(...)...
还要考虑Bergi said in their comment。
1:实际上,你可以await
任何价值,但await
没有承诺的东西没有意义。通过不从basic
返回承诺,lsEntered
将不会等待设置本地存储。