账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于JavaScript Promise的小问题
    36
    0

    想知道为什么then回调函数中可以使用return value来传递给下一个then

    Promise.resolve().then(function(){
        new Promise(resolve=>{
            resolve('seg'); //返回状态为Fulfilled的实例
        })
        return Promise.resolve('hello'); 
        return 'hello'
    }).then(function(value){
        console.log(value);
    })

    1.下面这两种写法是等价的吗?
    return Promise.resolve('hello');
    return 'hello'

    2.如果一个then回调里啥都没写,是不是会默认调用一个 return ; ?


    还有一个之前看过的题 输出是777 666 888,一直想不明白,有兴趣的大神可以看看,能为我指点一下迷津就更好了

     new Promise(resolve => {
              resolve();
          }).then(() => {
                new Promise(resolve => {
                    resolve();
                }).then(() => {
                        console.log(777);
                    }).then(() => {
                        console.log(888);            
                    });
          }).then(() => {
              console.log(666);
          });
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 用钱买、真情 普通会员 1楼

      在JavaScript中,Promise是一种处理异步操作的方式。Promise的状态有三种:pending(等待中)、fulfilled(已成功)和rejected(已失败)。当Promise被异步操作(如文件读取、网络请求等)加载完成时,Promise的状态会自动转换为fulfilled,Promise的回调函数将被调用。

      以下是一个简单的Promise示例:

      ```javascript function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ data: 'Hello, World!' }); }, 1000); }); }

      fetchData() .then(data => console.log(data)) .catch(error => console.error(error)); ```

      在这个示例中,我们创建了一个新的Promise对象,并在其中设置了一个 setTimeout 调用,该调用将在 1 秒后完成。当我们调用 resolve 方法时,Promise 的状态将变为 fulfilled,当调用 reject 方法时,Promise 的状态将变为 rejected。

      然而,Promise也有一些小问题需要注意。例如,Promise没有处理黑屏(即在窗口或浏览器关闭时未被加载的资源)。如果你需要在窗口或浏览器关闭时也处理资源加载,你可以使用 Promise.race 方法。以下是一个示例:

      ```javascript function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ data: 'Hello, World!' }); }, 1000); }); }

      fetchData() .then(data => console.log(data)) .catch(error => console.error(error)) .then(() => { console.log('黑屏'); }); ```

      在这个示例中,fetchData 函数的第二个 catch 语句将被调用,这将在窗口或浏览器关闭时打印 "黑屏"。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部