我正在尝试使用 Promise 函数。 Promise 函数嵌套在 dataService 函数内。 dataService函数内部有一个getData方法,它定义了一个promise,然后检查,如果内部随机生成的数字大于5,则promise变量执行resolve,否则它是reject(内置promise参数)。 then 属性记录答案。但是我收到了类似的错误 - 无法读取未定义的属性“then”和无法读取未定义的属性“resolve” 位于 Promise.html:19。 请帮忙。
<html>
<head>
<title>Promise</title>
</head>
<body>
<script>
function dataService() {
var obj = {};
console.log('inside function');
obj.getData = function () {
var promise = new Promise(function(resolve,reject){
var number = Math.random() * 10;
if (number > 5) {
( promise.resolve("Resolved promise " + number));
}
else
( promise.reject("Promise Rejected " + number));
})};
return obj;
}
var data = dataService();
console.log(data);
data.getData()
.then(function(val) {
console.log("It has been a success"),
console.log(val)
} )
.catch(function (err) {
console.log("It has been failed"),
console.log(err)
});
</script>
</body>
</html>
最佳答案
调用函数时应返回 Promise:
function dataService() {
var obj = {};
console.log('inside function');
obj.getData = function () {
return new Promise(function(resolve,reject){
var number = Math.random() * 10;
if (number > 5) {
( resolve("Resolved promise " + number));
}
else
( reject("Promise Rejected " + number));
})};
return obj;
}
var data = dataService();
console.log(data);
data.getData()
.then(function(val) {
console.log("It has been a success"),
console.log(val)
} )
.catch(function (err) {
console.log("It has been failed"),
console.log(err)
});
关于javascript - 在 javascript 中使用 Promise 函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49529439/