getId
导致错误无法读取属性'然后'未定义。在等待Promise.resolve(r)
承诺得到解决之前返回fetchIDs
(GET请求已完成)。
function fetchIDs () {
return new Promise (function (resolve, reject){
// GET request
});
};
function getId () {
if (typeof localStorage.id !== 'undefined' ) {
return Promise.resolve(localStorage.id);
}
else {
fetchIDs().then(function (r) {
return Promise.resolve(r);
});
}
};
getId().then(function (r) {
localStorage.id = r;
doSthElse();
});
知道我在这里错过了什么或做错了什么?感谢。
答案 0 :(得分:1)
getId()
,则 fetchIDs()
不会返回任何内容。您可以将其更改为:
function getId () {
if (typeof localStorage.id !== 'undefined' ) {
return Promise.resolve(localStorage.id);
}
else {
return fetchIDs().then(function (r) {
return Promise.resolve(r);
});
}
};
但是,你实际上并不需要额外的Promise.resolve(r)
而且可以这样做:
function getId () {
if (typeof localStorage.id !== 'undefined' ) {
return Promise.resolve(localStorage.id);
}
else {
return fetchIDs();
}
};
这将返回fetchIDs()
的承诺,getId()
的来电者随后可以使用该承诺。