草庐IT

javascript - 如何保证多个 promise 的解决顺序?

尝试学习一些现代JS,尤其是ECMAScript6Promises。我正在玩这个简单的测试:letslow=newPromise((resolve)=>{setTimeout(function(){ console.log('slow'); resolve(); },2000,'slow');});letinstant=newPromise((resolve)=>{ console.log('instant'); resolve(); });letquick=newPromise((resolve)=>{setTimeout(function(){ console.log('quick

javascript - 使用异步/等待时在 Express 中捕获未处理的异常

看下面的TypeScript代码:app.get('/test_feature',function(req:Request,res:Response){thrownewError("Thisisthebug");});app.use(logErrors);functionlogErrors(err:Error,req:Request,res:Response,next:NextFunction){console.log(err);mongoDal.log(err.message,err);next(err);}在这里,我在请求处理程序中抛出一个错误,它会按预期触发logErrors函数

javascript - 使用 'Promise' 与不使用 'Promise' : in which cases?

我不知道SO是否适合提出这样的问题。我知道一点Promises,我在Node/Express环境中使用它们来“修复”Node的异步行为查询数据库(=等待数据库回答,然后做一些事情)。然而,我使用它们的次数越多,我就越不知道何时不用它们。例如,我写了一段这样的代码(用于查询GoogleMatrixAPI的本地脚本).......for(vari=0;i{}...我不知道在这里使用Promise.all是否有意义...有规律可知吗?我没有得到的行为?换句话说,我什么时候知道我的脚本运行没有正确参数的函数存在“风险”(argument从另一个函数返回这不是“结束”)...?谢谢。

javascript - 未处理的拒绝错误 Bluebird

我有以下代码。它按预期工作,没有抛出未处理的拒绝错误。p=newPromise(fulfill,reject)->rejectnewError'someerror'p.catch(error)->console.logerror现在,第二个代码示例会抛出一个未处理的拒绝错误。当我清楚地处理错误时,有人可以向我解释为什么会发生这种情况。p=newPromise(fulfill,reject)->rejectnewError'someerror'p.then->console.log'ok'p.catch(error)->console.logerror顺便说一句。我在chrome和blu

javascript - Promise.then 不执行

在下面的代码块中,只有“firstpromise”被记录到控制台。这是为什么?我试图编写一个测试来弄清楚.then()在.catch()之后是如何执行的,但当除了第一个promise之外什么都没有运行时,我感到很惊讶。这是怎么回事?functionfoo(){returnnewPromise((resolve,reject)=>{returnconsole.log('firstpromise')}).then(()=>console.log('firstthen')).catch(()=>console.log('catchblock')).then(()=>console.log('

javascript - 第二个 .then() on promise 被调用时数据未定义

我在名为accountManager的服务中有一个函数返回如下所示的promise:这个promise上的.then()会触发并打印出预期的响应。signIn(email:String,password:String):Promise{returnthis.http.post('http://localhost:3000/api/signin',JSON.stringify({"email":email,"password":password}),{headers:this.headers}).toPromise().then(res=>{//**Thisisdefined**cons

javascript - 在数组javascript的排序功能中实现异步/等待

我正在尝试在ProtractorElementArrayFinder上实现排序方法。众所周知,所有Protractor方法都返回promise。所以我的排序方法有一个条件取决于promise的解决。我正在为async/await使用节点插件,以使其与低于6的node.js版本兼容。(这里是插件:https://www.npmjs.com/package/asyncawait)这是我的代码,其中this是ArrayElementFinder:varasyncCompare=async(function(a,b){letx=await(a.getText());lety=await(b.g

javascript - Promise.all()被拒绝后的值,显示['' PromiseStatus''] : resolved if catch block is present

我有两个promise,一个被拒绝,一个被解决。Promise.all被调用。当其中一个promise被拒绝时,它执行了Promise.all的catchblock。constpromise1=Promise.resolve('Promise1Resolved');constpromise2=Promise.reject('Promise2Rejected');constpromise3=Promise.all([promise1,promise2]).then(data=>{console.log('Promise.allResolved',data);}).catch(error=

javascript - 什么是成熟的 promise

当我偶然发现这条线时,我正在浏览mongoose文档Mongoosequeriesarenotpromises.Theyhavea.then()functionforcoandasync/awaitasaconvenience.Ifyouneedafully-fledgedpromise,usethe.exec()function.以这个例子varquery=Band.findOne({name:"GunsN'Roses"});assert.ok(!(queryinstanceofPromise));//Aqueryisnotafully-fledgedpromise,butitdoe

javascript - 为什么 Javascript 中的递归异步函数会导致堆栈溢出?

考虑这个片段:functionf(){returnnewPromise((resolve,reject)=>{f().then(()=>{resolve();});});}f();也可以这样写:asyncfunctionf(){returnawaitf();}f();如果您运行给定的两个代码中的任何一个,您将遇到此错误:(node:23197)UnhandledPromiseRejectionWarning:RangeError:Maximumcallstacksizeexceeded我的问题是为什么?在回答我的问题之前,请考虑我的论点:我了解递归的概念以及如果没有停止条件它如何导致堆