promise 订阅
《Promise》是李玟于2001年10月13日发行的音乐专辑,共收录13首歌曲,由李振权、周杰伦等人担任制作人。2002年,专辑歌曲《So Crazy》获得第8届华语音乐榜中榜最受欢迎歌曲奖 [1]  。 展开全文
《Promise》是李玟于2001年10月13日发行的音乐专辑,共收录13首歌曲,由李振权、周杰伦等人担任制作人。2002年,专辑歌曲《So Crazy》获得第8届华语音乐榜中榜最受欢迎歌曲奖 [1]  。
信息
专辑歌手
李玟
制作人
李振权,周杰伦
专辑语言
普通话,粤语
曲目数量
13首
发行时间
2001年10月13日
音乐风格
流行
发行地区
中国
外文名称
Promise
唱片公司
索尼音乐
Promise创作背景
因为李玟在筹备、推出该专辑的时候,已经出道九年了。在此期间,她通过努力迈向国际,也创造了音乐成绩。她希望通过该专辑,将她的音乐心情与听众分享,因此为专辑取名《Promise》。为了展现出专辑的摇滚曲风和她的音乐实力,李玟亲自参与创作了多首歌曲 [2]  。为了写歌,李玟自创“录音机创作法”的方式进行创作,通过录音机录下哼唱的旋律,再通过钢琴将音符弹奏出来 [3]  。此外,专辑制作阵容包括李振权及周杰伦等人 [4]  。《Baby,对不起》由李玟亲自参与填词。当时,李玟在翻阅学生时代的随身笔记本时,看到了她恋爱时的心情手记,于是有感而发创作出该曲。在演唱该曲时,李玟投入了真情实感 [5]  。《刀马旦》是周杰伦为李玟量身订做的歌曲。因为录制该曲的过程中产生了很多灵感,所以李玟和周杰伦两人从晚上5点进棚录音,一直唱到了第二天早上8点。期间,周杰伦还在歌曲中即兴客串了Rap [6]  。因为李玟偏好热辣舞曲风格的歌曲,所以她特意向香港音乐人雷颂德邀歌,得到了一首粤语歌曲《好来好往》 [3]  。
收起全文
精华内容
参与话题
问答
  • Promise

    千次阅读 多人点赞 2018-10-21 19:07:27
    promise 概念  Promise是一个构造函数。  该函数有一个函数参数  函数参数有两个参数 resolve reject ,分别为成功与失败之后的回调函数。 用法  var promise = new Promise(function(resolve,reject){ ...

     

    promise

    概念

    •     Promise是一个构造函数。
    •     该函数有一个函数参数
    •     函数参数有两个参数 resolve reject ,分别为成功与失败之后的回调函数。


    用法


        var promise = new Promise(function(resolve,reject){
                ...
            })
     

    • 1.Promise.all()=>用于汇总多个promise的结果。
    • 2.Promise.race()
    • 3.Promise.reject(reason)
    • 4.Promise.resolve(value)
    • 5.Promise.prototype.catch(onRejected)
    • 6.Promise.prototype.then(onFulfilled, onRejected)
    • 7.Promise.prototype.finally(onFinally)

    async

    1.一个async函数可以包含一个await表达式,暂停异步函数的执行并等待传入Promise的解析,然后恢复async函数的执行并返回解析后的值。
    eg:=>


    function resolveAfter2Seconds(x) {
      return new Promise(resolve => {
        setTimeout(() => {
          resolve(x);
        }, 2000);
      });
    }


    async function add1(x) {
      const a = await resolveAfter2Seconds(20);
      const b = await resolveAfter2Seconds(30);
      return x + a + b;
    }

    add1(10).then(v => {
      console.log(v);  // prints 60 after 4 seconds.
    });


    async function add2(x) {
      const p_a = resolveAfter2Seconds(20);
      const p_b = resolveAfter2Seconds(30);
      return x + await p_a + await p_b;
    }

    add2(10).then(v => {
      console.log(v);  // prints 60 after 2 seconds.
    });
     

    2.函数重写承诺链


    function getProcessedData(url) {
      return downloadData(url) // returns a promise
        .catch(e => {
          return downloadFallbackData(url)  // returns a promise
        })
        .then(v => {
          return processDataInWorker(v); // returns a promise
        });
    }
    它可以用一个async函数重写,如下所示:

    async function getProcessedData(url) {
      let v;
      try {
        v = await downloadData(url); 
      } catch(e) {
        v = await downloadFallbackData(url);
      }
      return processDataInWorker(v);
    }
     

    Promise.all()

    用法:Promise.all(迭代)

    迭代:一个可迭代的对象,如Array或者String.

    返回值

     异步性

    1.同步,当且仅当通过的迭代是空的时,Promise.all同步解析
    2.异步,不然就要异步处理
      快速性
    3.快速行为,如果任何元素被拒绝,则Promise.all被拒绝。

    eg:1&2=>
    ```bash
    var p = Promise.all([]); // will be immediately resolved
    var p2 = Promise.all([1337, "hi"]); // non-promise values will be ignored, but the evaluation will be done asynchronously
    console.log(p);
    console.log(p2)
    setTimeout(function(){
        console.log('the stack is now empty');
        console.log(p2);
    });

    // logs
    // Promise { <state>: "fulfilled", <value>: Array[0] }
    // Promise { <state>: "pending" }
    // the stack is now empty
    // Promise { <state>: "fulfilled", <value>: Array[2] }
    ```
    eg:3=>
    ```bash
    var p1 = new Promise((resolve, reject) => { 
      setTimeout(resolve, 1000, 'one'); 
    }); 
    var p2 = new Promise((resolve, reject) => { 
      setTimeout(resolve, 2000, 'two'); 
    });
    var p3 = new Promise((resolve, reject) => {
      setTimeout(resolve, 3000, 'three');
    });
    var p4 = new Promise((resolve, reject) => {
      setTimeout(resolve, 4000, 'four');
    });
    var p5 = new Promise((resolve, reject) => {
      reject('reject');
    });

    Promise.all([p1, p2, p3, p4, p5]).then(values => { 
      console.log(values);
    }, reason => {
      console.log(reason)
    });

    //From console:
    //"reject"

    //You can also use .catch
    Promise.all([p1, p2, p3, p4, p5]).then(values => { 
      console.log(values);
    }).catch(reason => { 
      console.log(reason)
    });

    //From console: 
    //"reject"
     

    Promise.race()

    用法 Promise.race(迭代)

    1.如果通过的迭代是空的,则返回的promise将永远等待。
    2.如果迭代包含一个或多个非承诺值和/或已经解决/拒绝的承诺,Promise.race 则将解析为在迭代中找到的这些值中的第一个。
    3.也有异步性


    eg:2=>

    var foreverPendingPromise = Promise.race([]);
    var alreadyResolvedProm = Promise.resolve(666);

    var arr = [foreverPendingPromise, alreadyResolvedProm, "non-Promise value"];
    var arr2 = [foreverPendingPromise, "non-Promise value", Promise.resolve(666)];
    var p = Promise.race(arr);
    var p2 = Promise.race(arr2);

    console.log(p);
    console.log(p2);
    setTimeout(function(){
        console.log('the stack is now empty');
        console.log(p);
        console.log(p2);
    });// logs, in order:
    // Promise { <state>: "pending" } 
    // Promise { <state>: "pending" } 
    // the stack is now empty
    // Promise { <state>: "fulfilled", <value>: 666 }
    // Promise { <state>: "fulfilled", <value>: "non-Promise value" }

     

    var p1 = new Promise(function(resolve, reject) { 
        setTimeout(resolve, 500, 'one'); 
    });
    var p2 = new Promise(function(resolve, reject) { 
        setTimeout(resolve, 100, 'two'); 
    });
    
    Promise.race([p1, p2]).then(function(value) {
      console.log(value); // "two"
      // Both resolve, but p2 is faster
    });
    


     

    展开全文
  • promise

    千次阅读 2018-10-24 21:52:06
    promise

    promise

    展开全文

空空如也

1 2 3 4 5 ... 20
收藏数 49,853
精华内容 19,941
关键字:

promise