@冒泡麻须题库原文地址:http://csbin.io/promisesPromisesPromises挑战题1题:让我们先从复习异步函数开始吧!使用setTimeout,字符串“Hello!”在1000毫秒后打印。解决方案://Challenge1functionsayHello(){//在此处添加代码setTimeout(()=>console.log('Hello!'),1000)}//在readysayHello()时取消注释下面的行;//应该在1000毫秒后记录“Hello”挑战2问题:创建承诺。延迟1000ms后,传入值“Resolved!”在resolve中,并使用setTimeout。在调用promise解决之后,通过将console.log传递给.then来打印其内容。解决方案://Challenge2varpromise=newPromise(function(resolve,reject){//在此处添加代码setTimeout(()=>resolve('Resolved'),1000)});//应该打印出“Resolved!”//在此处添加代码promise.then(res=>console.log(res))挑战3问题:创建另一个promise。这次不使用setTimeout,而是传入值“Rejected!”在拒绝。调用promise后reject,打印其内容,通过将console.log传给.catch来实现。解决方案://Challenge3promise=newPromise(function(resolve,reject){//在此处添加代码reject('Rejected')})//应打印出“拒绝!”//在此处添加代码promise.catch(res=>console.log(res))挑战4问题:Promises是异步的。现在让我们证明他们做到了!创建一个promise,传入值“Promisehasbeenresolved!”在resolve中,去掉challenge4底部的注释。运行后我们看到的打印顺序是什么?“约定已经解决!”首先还是“我不是诺言!”第一的?为什么?解决方案://Challenge4promise=newPromise(function(resolve,reject){//在此处添加代码resolve()});//当readypromise.then(()=>console.log('Promisehas已解决!'));console.log("我不是诺言!");挑战5个问题:编写一个返回承诺的延迟函数。这个返回承诺应该返回一个在1000毫秒后调用resolve的setTimeout。解决方案://挑战5functiondelay(){returnnewPromise(function(resolve,reject){returnsetTimeout(resolve,1000)})}//取消下面代码的注释以进行测试//这段代码应该在之后记录“Hello”1000msdelay().then(sayHello);挑战6问题:在这个挑战中,我们将使用.then来链接承诺。创建两个变量:firstPromise和secondPromise,让secondPromise成为传递值“Second!”的承诺。在resolve中,firstPromise在resolve中传递secondPromise。使用.then调用firstPromise,会返回secondPromise,然后在其resolve执行后打印相应promise的内容,通过console.log传递给.then来实现。解决方案://挑战6////在下面添加代码varsecondPromise=Promise.resolve('Second!')varfirstPromise=newPromise(function(resolve,reject){resolve(secondPromise)})firstPromise.then()。then(res=>console.log(res))挑战7问题:我们有一个从数据库中提取数据的API,它接收一个下标参数并返回一个承诺。您的挑战是使用promise.all进行3次API调用,然后在调用完成后返回相应的数据。题解://Challenge7constfakePeople=[{name:'Rudolph',hasPets:false,currentTemp:98.6},{name:'Zebulon',hasPets:true,currentTemp:22.6},{name:'Harold',hasPets:true,currentTemp:98.3},]constfakeAPICall=(i)=>{constreturnTime=Math.floor(Math.random()*1000);returnnewPromise((resolve,reject)=>{if(i>=0&&i
