【发布时间】:2017-08-24 10:21:48
【问题描述】:
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();
}
我想等到 basic 完成并且 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;
}
【问题讨论】:
-
可能
basic有错误。 -
你没有在
basic返回一个承诺 -
您可能希望使该访问令牌无效,现在每个人都可以在编辑历史记录中看到它
-
JSON.parse不返回承诺,所以你应该省略await那里 -
而不是将结果存储在本地存储中,您应该使用它来解决承诺。这将使
basic的使用更加灵活。
标签: javascript angular typescript async-await