函数内部promise的返回值是如何工作的(第一次学习js)

发布于 2025-01-20 06:31:32 字数 678 浏览 1 评论 0原文

我最近开始学习JS,并看到了关于承诺的教程,在一项手练习期间,我尝试写自己的诺言。



function isEven(number){
    return new Promise((resolve,reject)=>{
        res = "";
        if(isNaN(number)){
            reject();
            return res;

        }
        else{ 
            if(number%2 == 0){
                res= "Even";
            }
            res = "odd";
            resolve();
            return res;
        }
    })
}
var num = 45
let str = isEven(num).then(()=>{
    console.log("succesfull");
}).catch(()=>{
    console.log("NAN");
})
document.getElementById('number').innerHTML = str;

我得到的响应[Object Promise]。我想访问通过函数返回的str值,请有人帮助我理解这个概念

I recently started learning JS and saw a tutorial on promises, and during a handson exercise i tried writing my own promise.



function isEven(number){
    return new Promise((resolve,reject)=>{
        res = "";
        if(isNaN(number)){
            reject();
            return res;

        }
        else{ 
            if(number%2 == 0){
                res= "Even";
            }
            res = "odd";
            resolve();
            return res;
        }
    })
}
var num = 45
let str = isEven(num).then(()=>{
    console.log("succesfull");
}).catch(()=>{
    console.log("NAN");
})
document.getElementById('number').innerHTML = str;

and the response i got [object Promise] . I want to access the str value which is returned through function isEven , kindly someone help me to understand this concept

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧故 2025-01-27 06:31:32

您的问题是,当您在某些条件下解决/拒绝承诺时,没有与该操作相关的值。您需要将您想要获取的任何内容传递给这些方法,如下所示:

function isEven(number){
    return new Promise((resolve,reject)=>{
        res = "";
        if(isNaN(number)){
            reject(res)
        }
        else{ 
            if(number%2 == 0){
                res= "Even";
            }
            res = "odd";
            resolve(res)
        }
    })
}
var num = 45
let str = isEven(num).then(()=>{
    console.log("succesfull");
}).catch(()=>{
    console.log("NAN");
})
document.getElementById('number').innerHTML = str;

如果您在 Promise 上使用 .then ,它会自动假设所述 Promise 将解析,并将解析后的值作为任何回调函数的输入你放进去

Your problem is that, while you're resolving/rejecting the promise under certain conditions, there are no values associated with that action. You need to pass whatever you want to grab to those methods as below:

function isEven(number){
    return new Promise((resolve,reject)=>{
        res = "";
        if(isNaN(number)){
            reject(res)
        }
        else{ 
            if(number%2 == 0){
                res= "Even";
            }
            res = "odd";
            resolve(res)
        }
    })
}
var num = 45
let str = isEven(num).then(()=>{
    console.log("succesfull");
}).catch(()=>{
    console.log("NAN");
})
document.getElementById('number').innerHTML = str;

If you use the .then on a Promise it auto assumes that said Promise will resolve, taking that resolved value as input for whatever callback function you're putting inside

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文