javascript - 在 javascript 中使用 Promise 函数时出错

标签 javascript es6-promise

我正在尝试使用 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/

相关文章:

javascript - promise .catch() : how to identify the differences between operational rejects and programmatical throws

javascript - 如何等待异步函数并收集响应

javascript - "resolve"是否始终意味着与 "fulfill"不同的东西?

javascript - setTimeout后异步回调执行问题

javascript - 使用 .then 注册消费函数

javascript - HTML5 中的本地编辑器

javascript - Extjs 使用更新的单选项目数组重新加载单选组

javascript - useCallback 有语义保证吗?

javascript - 无法获取html元素的宽度

javascript - 打开新窗口时 IE 浏览器出现问题