JavaScript 承诺 - 无法读取未定义的 属性 'then'
JavaScript Promises - Cannot read property 'then' of undefined
getId
导致错误 Cannot read 属性 'then' of undefined。它在等待 fetchIDs
承诺得到解决(GET 请求已完成)之前返回 Promise.resolve(r)
。
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();
});
知道我在这里遗漏了什么或做错了什么吗?谢谢。
如果您最终调用 fetchIDs()
,getId()
不会 return 任何事情。你可以改成这样:
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();
}
};
这将 return 来自 fetchIDs()
的承诺,getId()
的调用者随后可以使用它。
getId
导致错误 Cannot read 属性 'then' of undefined。它在等待 fetchIDs
承诺得到解决(GET 请求已完成)之前返回 Promise.resolve(r)
。
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();
});
知道我在这里遗漏了什么或做错了什么吗?谢谢。
fetchIDs()
,getId()
不会 return 任何事情。你可以改成这样:
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();
}
};
这将 return 来自 fetchIDs()
的承诺,getId()
的调用者随后可以使用它。