草庐IT

promise2

全部标签

javascript - 如何在恢复功能之前等待 JavaScript Promise 解决?

我正在做一些单元测试。测试框架将页面加载到iFrame中,然后针对该页面运行断言。在每次测试开始之前,我创建一个Promise它设置了iFrame的onload事件调用resolve(),设置iFrame的src,并返回promise。所以,我可以调用loadUrl(url).then(myFunc),它会等待页面加载后再执行myFunc是。我在我的测试中到处都使用这种模式(不仅仅是为了加载URL),主要是为了允许对DOM进行更改(例如,模仿单击按钮,并等待div隐藏和显示).这种设计的缺点是我经常编写匿名函数,其中只有几行代码。此外,虽然我有一个解决方法(QUnit的assert.a

javascript - promise - 是否可以强制取消 promise

我使用ES6Promises来管理我所有的网络数据检索,在某些情况下我需要强制取消它们。基本上情况是这样的,我在UI上有一个预先输入的搜索,其中请求委托(delegate)给后端必须根据部分输入执行搜索。虽然此网络请求(#1)可能需要一点时间,但用户继续键入最终触发另一个后端调用(#2)这里#2自然优先于#1,所以我想取消Promise包装请求#1。我已经在数据层中缓存了所有Promise,因此理论上我可以在尝试为#2提交Promise时检索它。但是,一旦我从缓存中检索到Promise#1,我该如何取消它呢?谁能推荐一种方法? 最佳答案

javascript - promise - 是否可以强制取消 promise

我使用ES6Promises来管理我所有的网络数据检索,在某些情况下我需要强制取消它们。基本上情况是这样的,我在UI上有一个预先输入的搜索,其中请求委托(delegate)给后端必须根据部分输入执行搜索。虽然此网络请求(#1)可能需要一点时间,但用户继续键入最终触发另一个后端调用(#2)这里#2自然优先于#1,所以我想取消Promise包装请求#1。我已经在数据层中缓存了所有Promise,因此理论上我可以在尝试为#2提交Promise时检索它。但是,一旦我从缓存中检索到Promise#1,我该如何取消它呢?谁能推荐一种方法? 最佳答案

javascript - 如何在 Promise 中捕获未捕获的异常

有没有办法全局捕获所有异常,包括Promise异常。示例:window.onerror=functionmyErrorHandler(errorMsg,url,lineNumber){alert("Erroroccured:"+errorMsg);//oranymessagereturnfalse;}varmyClass=function(){}varpr=newPromise(function(resolve,react){varmyInstance=newmyClass();myInstance.undefinedFunction();//thiswillthrowExceptio

javascript - 如何在 Promise 中捕获未捕获的异常

有没有办法全局捕获所有异常,包括Promise异常。示例:window.onerror=functionmyErrorHandler(errorMsg,url,lineNumber){alert("Erroroccured:"+errorMsg);//oranymessagereturnfalse;}varmyClass=function(){}varpr=newPromise(function(resolve,react){varmyInstance=newmyClass();myInstance.undefinedFunction();//thiswillthrowExceptio

javascript - 如何正确地从 Promise 返回多个值?

我最近遇到了几次特定的情况,我不知道如何妥善解决。假设以下代码:somethingAsync().then(afterSomething).then(afterSomethingElse)functionafterSomething(amazingData){returnprocessAsync(amazingData);}functionafterSomethingElse(processedData){}现在可能会出现一种情况,我想在afterSomethingElse中访问amazingData。一个明显的解决方案是从afterSomething返回一个数组或散列,因为,好吧,您

javascript - 如何正确地从 Promise 返回多个值?

我最近遇到了几次特定的情况,我不知道如何妥善解决。假设以下代码:somethingAsync().then(afterSomething).then(afterSomethingElse)functionafterSomething(amazingData){returnprocessAsync(amazingData);}functionafterSomethingElse(processedData){}现在可能会出现一种情况,我想在afterSomethingElse中访问amazingData。一个明显的解决方案是从afterSomething返回一个数组或散列,因为,好吧,您

javascript - 如何使用 jQuery promises 链接三个异步调用?

我需要以同步方式进行三个HTTP调用,如何将数据从一个调用传递到另一个调用?functionfirst(){ajax()}functionsecond(){ajax()}functionthird(){ajax()}functionmain(){first().then(second).then(third)}我尝试将deferred用于这两个函数,我想出了一个部分解决方案。我可以将它扩展为三个功能吗?functionfirst(){vardeferred=$.Deferred();$.ajax({"success":function(resp){deferred.resolve(re

javascript - 如何使用 jQuery promises 链接三个异步调用?

我需要以同步方式进行三个HTTP调用,如何将数据从一个调用传递到另一个调用?functionfirst(){ajax()}functionsecond(){ajax()}functionthird(){ajax()}functionmain(){first().then(second).then(third)}我尝试将deferred用于这两个函数,我想出了一个部分解决方案。我可以将它扩展为三个功能吗?functionfirst(){vardeferred=$.Deferred();$.ajax({"success":function(resp){deferred.resolve(re

javascript - RxJS 序列等同于 promise.then()?

我过去常常用promise进行很多开发,现在我正在转向RxJS。RxJS的文档没有提供关于如何从promise链移动到观察者序列的非常清晰的示例。例如,我通常会编写包含多个步骤的promise链,例如//afunctionthatreturnsapromisegetPromise().then(function(result){//dosomething}).then(function(result){//dosomething}).then(function(result){//dosomething}).catch(function(err){//handleerror});我应该