• 每天前端学习 关于Promise和Symbol


    今天工作遇到个关于Promise的小问题,结果是自己太新手,后来解决了

    function test() {
        return new Promise (resolve, reject) {     
          reject('超时')    
        }
    }
    
    使用了await, 必须catch才能让阻塞放开
    
     async function () {
        const obj = await test() // 若不catch则会一直阻塞在这
        console.log('打印了')  // 没打印   
    }
    
    正确: 
     async function () {
      const obj = await test().catch(e => {})
      console.log(obj)  // '超时'  
    }
    
      

    若 要等待多个结果回来,再进行返回,则可以使用 Promise.all(arg1,arg2,arg3.....)

    let p1 = new Promise((resolve, reject) => {
      resolve('成功了')
    })
    
    let p2 = new Promise((resolve, reject) => {
      resolve('success')
    })
    
    let p3 = Promise.reject('失败')
    
    Promise.all([p1, p2]).then((result) => {
      console.log(result)               //['成功了', 'success']
    }).catch((error) => {
      console.log(error)
    })
    
    Promise.all([p1,p3,p2]).then((result) => {
      console.log(result)
    }).catch((error) => {
      console.log(error)      // 失败了,打出 '失败'
    })

    ES6新增一个数据类型 Symbol ,但不支持 new Symbol,可以返回唯一值 ,一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的

    const symbol1 = Symbol();
    const symbol2 = Symbol(42);
    const symbol3 = Symbol('foo');
    cibst symbol4 = new Symbol(); // TypeError
    console.log(typeof symbol1);
    // expected output: "symbol"
    
    console.log(symbol2 === 42);
    // expected output: false
    
    console.log(symbol3.toString());
    // expected output: "Symbol(foo)"
    
    console.log(Symbol('foo') === Symbol('foo'));
    // expected output: false
     
     

    当使用 JSON.stringify() 时,以 symbol 值作为键的属性会被完全忽略

    当一个 Symbol 包装器对象作为一个属性的键时,这个对象将被强制转换为它包装过的 symbol

    JSON.stringify({[Symbol("foo")]: "foo"});
    
    
    
    var sym = Symbol("foo");
    var obj = {[sym]: 1};
    obj[sym];            // 1
    obj[Object(sym)];    // still 1
  • 相关阅读:
    获得指定目录路径
    播放音乐(mciSendString)
    INotifyPropertyChanged接口
    从excel表格加载数据返回DataSet
    事件与委托
    .net中实现伪静态的学习小结
    今天开通博客了
    EasyUI后台管理系统学习四
    EasyUI后台管理系统学习三
    EasyUI后台管理系统学习二
  • 原文地址:https://www.cnblogs.com/water-no-moon/p/13121202.html
Copyright © 2020-2023  润新知