#25 李雷向韩梅梅求婚


  • 0
    administrators

    李雷向韩梅梅求婚,韩梅梅说过一段时间(20~50ms)再回复他。

    完成 proposeToMissHan 函数,会传入一个布尔值参数 isOK,用来预先设定是否答应李雷的求婚。这个函数会返回一个 Promise,一段时间(20~50ms)以后,根据 isOK 参数,韩梅梅可能会说字符串 ok 答应李雷,也可能说字符串 no 来拒绝(reject)李雷。

    你只需要完成 proposeToMissHan 函数的编写。


  • 0

    胡大,为什么我在浏览器中可以运行的,但是在这边提交就显示运行超时,0_1494569466241_upload-755975c1-f8fd-4159-928e-b1b92b2aed4b 0_1494569528370_upload-77cb314c-7011-4026-b457-ea1d3ba8dbe4


  • 0

    @胡子大哈 麻烦您看一下,谢谢啦


  • 0

    你没有运行 resolve 或者 reject,Promise 不知道什么时候结束


  • 0

    这题的题目有点尴尬 一段时间这个概念我当时不知道是不是题目的范围 如果是的话最好也高亮一下?ok 或者 no 就是输出 String ok or no 这里我也……犹豫了一下


  • 0

    @zhpech 最后是用的return还是怎样..


  • 0

    可以去看下 Promise 是怎么样传出值的


  • 0

    @zhpech 可以了,原来是让我们用resolve和reject来传递结果...谢谢!


  • 0
    administrators

    @zhpech 感谢指出,我优化一下。


  • 0

    const proposeToMissHan = (isOK) => {
      return new Promise(function(resolve, reject){
        setTimeout(function(){
            const say = isOK ? resolve('ok') : reject('no')
            console.log(say)
        }, 30);
      }
    }
    

    这样写哪里错了吗


  • 0
    administrators

    @dcbryant 你可以放到浏览器里面先跑一下。倒数第二行少了个 )


  • 0

    @胡子大哈 我去,还真是,我一定痛改前非。因为每次webstorm都要开启运行好长时间,我就懒得打开。感谢


  • 1

    一直在处理then里面的内容,然后给出的报错信息以为是处理错了,最后发现原来只需要返回promise

    const proposeToMissHan = (isOK) => {
        let thoughtTime = 35;
        return new Promise(function(resolve,reject){
            setTimeout(function(){
                if(isOK){
                    resolve("ok");
                }else{
                    reject("no");
                }
            },thoughtTime)
        });
    }
    

  • 0

    function proposeToMissHan(isOK) {
      return new Promise((resolve, reject) => setTimeout(isOK => isOK ? resolve('ok') : reject('no'), 50))
    }
    

  • 0

    const proposeToMissHan = (isOk) => {
    let time = Math.round(Math.random()*30+20);
    return new Promise((resolve,reject) => {
    setTimeout(() => {
    isOk?resolve('ok'):reject('no');
    },time);
    });
    }


  • 0

    // Promise 版本
    const proposeToMissHan = isOK => {
      return new Promise((resolve, reject) => {
        setTimeout(_ => {
          if (!isOK) return reject('no')
          resolve('ok')
        }, 20)
      }) 
    }
    
    
    // test
    // proposeToMissHan(false).then(res => { console.log(res) } ).catch(err => { console.log(err) })
    

  • 0

    0_1516695744194_WX20180123-162146.png

    这么严格 : )


  • 0

    var isOK_flag=false;
    alert("MEI,i love you,marry me!!");
    function proposeToMissHan(isOK){
    return new Promise(function (resolve,reject) {
    var time=parseInt(Math.random()*(50-20+1)+20);
    setTimeout(function () {
    isOK ?resolve("ok,yes I DO!"):reject("no, I'M sorry!We are not suitable!")
    },time)
    })
    }
    proposeToMissHan(isOK_flag).then(function (res) {
    alert(res);
    }).catch(function (res) {
    alert(res)
    })


  • 0

    const proposeToMissHan = (isOK) => {
     return new Promise((resolve, reject) => setTimeout(isOK => isOK ? resolve('ok') : reject('no'), Math.floor(Math.random()*31)+20));
    }

  • 0

    const proposeToMissHan = (isOK) => {
    /* TODO */
    var time = Math.floor(50-Math.random()*30)
    return new Promise((resolve,reject)=>{
    setTimeout((resolve)=>{
    if(isOK){
    resolve('ok')
    }else{
    reject('no')
    }
    },time)
    })
    }


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待