JavaScript承诺-无法读取属性'那么'的未定义
JavaScript Promises - Cannot read property 'then' of undefined
getId
导致错误无法读取未定义的属性'then'。它在等待解决fetchIDs
承诺之前返回Promise.resolve(r)
(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();
});
知道我在这里错过了什么或做错了什么吗?谢谢
fetchIDs()
,则getId()
不会返回任何内容。你可以把它改成这样:
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()
的promise,然后getId()
的调用者可以使用该promise。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- JavaScript承诺-无法读取属性'那么'的未定义
- 未捕获的类型错误:无法读取属性'那么'使用Sweet Alert未定义的
- AngularJS和Restangular:TypeError:无法读取属性'那么'的未定义
- AngularJS+JQuery=TypeError:无法读取属性'那么'的未定义
- TypeError:无法读取属性'那么'在使用Karma测试AngularJS控制器时未定义的
- 返回承诺,但得到'无法读取属性'那么'的未定义'
- Parse.com后台作业云代码无法调用方法'那么'的未定义
- 工厂方法没有't return-TypeError:无法读取属性'那么'的未定义
- AngularJS:试图使用一个服务,得到错误"无法读取属性'那么'“未定义”;
- Promise-TypeError:无法读取属性'那么'的未定义