Questions tagged «promise»

承诺是延迟计算的一种策略,适用于多种并发样式:用于本地计算的线程和事件循环并发,以及同步和异步远程消息传递。一个promise表示异步操作的最终结果。处理承诺的主要方式是通过注册从承诺的最终值或失败原因到新承诺的转换的方法。

5
如何返回许多承诺并在执行其他操作之前等待所有承诺
我有一个循环,该循环调用异步完成的方法。该循环可以多次调用该方法。在这个循环之后,我有另一个循环,仅当所有异步工作完成后才需要执行。 所以这说明了我想要的: for (i = 0; i < 5; i++) { doSomeAsyncStuff(); } for (i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } 我对诺言不太熟悉,所以有人可以帮助我实现诺言吗? 这是我的doSomeAsyncStuff()举止: function doSomeAsyncStuff() { var editor = generateCKEditor(); editor.on('instanceReady', function(evt) { doSomeStuff(); // There should be the resolve() of the promises I think. }) } …

5
如何检查角度$ q诺言是否已解决
我了解,通常情况下then(),使用诺言时,只是将延续代码附加在调用和链接行为上。 但是,我要开始一个承诺包装的异步调用,然后分别开始一个3秒钟,$timeout()以便可以执行UI操作,仅当原始的承诺尚未完成时。(我预计这只会在连接速度慢,3G上的移动设备等上发生) 有了诺言,我是否可以在不阻塞或等待的情况下检查它是否完整?
84 angularjs  promise  q 

4
在Angular.js中实现承诺时如何始终运行一些代码
在我的Angular.js应用程序中,我正在运行一些异步操作。在开始之前,我先使用模式div覆盖应用程序,然后在操作完成后,无论操作是否成功,都需要删除div。 目前我有这个: LoadingOverlay.start(); Auth.initialize().then(function() { LoadingOverlay.stop(); }, function() { LoadingOverlay.stop(); // Code needs to be duplicated here }) 它运作良好,但是我更喜欢这样的伪代码: LoadingOverlay.start(); Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success. LoadingOverlay.stop(); }) 我认为这是一个很普遍的问题,所以我想可以做到,但是在文档中找不到任何东西。知道是否可以做到吗?


2
延期与承诺
除jQuery版本外,Deferred和Promise有什么区别? 我该怎么用?我只想打电话给fooExecute()。例如,我只需要fooStart()和fooEnd()即可切换html div状态。 //I'm using jQuery v2.0.0 function fooStart() { /* Start Notification */ } function fooEnd() { /* End Notification */ } function fooExecute() { /* Execute the scripts */ } $('#button1').on('click', function() { var deferred1 = $.Deferred(); var promise1 = $.Promise(); deferred1.??? promise1.??? });

9
如何按顺序执行承诺数组?
我有一系列的诺言,需要按顺序运行。 var promises = [promise1, promise2, ..., promiseN]; 调用RSVP.all将并行执行它们: RSVP.all(promises).then(...); 但是,如何依次运行它们? 我可以像这样手动堆叠它们 RSVP.resolve() .then(promise1) .then(promise2) ... .then(promiseN) .then(...); 但是问题在于承诺的数量各不相同,并且承诺的数组是动态构建的。

6
jQuery AJAX调用中是否有与“最终”类似的东西?
jQuery AJAX调用中是否有Java“最终”类似物?我在这里有这段代码。我总是抛出一个异常,但是我总是希望它转到then()方法。 call.xmlHttpReq = $.ajax({ url : url, dataType : 'json', type : 'GET' }).always(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) { throw "something"; }).then(function() { alert("i want to always run no matter what"); }); 我试图使用done(),complete()和另一个always(),但是似乎没有任何效果。 这是JSFiddle: http://jsfiddle.net/qv3t3L0m/

7
如何使用Bluebird来实现Node的child_process.exec和child_process.execFile函数的功能?
我正在Node.js下使用Bluebird Promise库,太好了!但是我有一个问题: 如果查看一下Node的child_process.exec和child_process.execFile的文档,您会发现这两个函数都返回一个ChildProcess对象。 那么推荐这种功能的推荐方法是什么? 请注意以下工作(我得到一个Promise对象): var Promise = require('bluebird'); var execAsync = Promise.promisify(require('child_process').exec); var execFileAsync = Promise.promisify(require('child_process').execFile); 但是如何获得原始Node.js函数的原始返回值?(在这些情况下,我将需要能够访问最初返回的ChildProcess对象。) 任何建议,将不胜感激! 编辑: 这是使用child_process.exec函数的返回值的示例代码: var exec = require('child_process').exec; var child = exec('node ./commands/server.js'); child.stdout.on('data', function(data) { console.log('stdout: ' + data); }); child.stderr.on('data', function(data) { console.log('stderr: ' + data); }); child.on('close', function(code) { console.log('closing …

6
JavaScript数组.reduce与async / await
似乎在将async / await与.reduce()合并时遇到一些问题,如下所示: const data = await bodies.reduce(async(accum, current, index) => { const methodName = methods[index] const method = this[methodName] if (methodName == 'foo') { current.cover = await this.store(current.cover, id) console.log(current) return { ...accum, ...current } } return { ...accum, ...method(current.data) } }, {}) console.log(data) 在完成之前data记录该对象。this.store 我知道您可以利用Promise.all异步循环,但这是否适用于.reduce()?

4
创建(ES6)承诺而不开始解决它
使用ES6承诺,如何在不定义解决承诺的逻辑的情况下创建承诺?这是一个基本示例(某些TypeScript): var promises = {}; function waitFor(key: string): Promise<any> { if (key in promises) { return promises[key]; } var promise = new Promise(resolve => { // But I don't want to try resolving anything here :( }); promises[key] = promise; return promise; } function resolveWith(key: string, value: any): void { …

8
对Node.js中的Promises的本地支持
当前版本的Node.js是否有对Promise的本地支持? Node.js使用V8引擎。Chrome也使用此JavaScript引擎,而Chrome 32具有对Promise的本机支持。但是我似乎无法获得在Node.js中(本机)工作的承诺。 我已经在Chrome 32中尝试了以下代码,并且可以正常工作。 var promise = new Promise(function(resolve, reject) { // do a thing, possibly async, then… if ( 1===1 /* everything turned out fine */) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } }); promise.then(function( message ) { console.log( message ); }, function( err ) { …

2
fromPromise在Observable类型上不存在
在使用rxjs的Angular 2中,我试图将Promise转换为Observable。由于许多在线指南的显示我用fromPromise的Observable。哪个抛出错误: Property 'fromPromise' does not exist on type 'typeof Observable'. Observable的输入方式如下: import { Observable } from "rxjs/Observable"; 尝试fromPromise像其他运算符一样导入会导致错误: import 'rxjs/add/operator/fromPromise'; 即使我抑制打字稿错误,它仍然会导致错误: (<any>Observable).fromPromise 错误: Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function 此处在rxjs存储库中报告了类似的问题,但那里也没有解决方案。

7
双括号在javascript中是什么意思,以及如何访问它们
情况 我有以下使用Promise的函数。 var getDefinitions = function() { return new Promise(function(resolve) { resolve(ContactManager.request("definition:entities")); }); } var definitions = getDefinitions() 的内容definitions是: Promise { [[PromiseStatus]]: "resolved", [[PromiseValue]]: child } PromiseValue直接访问属性返回未定义 var value = definitions.PromiseValue; // undefined 题 双括号[[ ]]是什么意思,以及如何检索的值[[PromiseValue]]。

5
如何在Promise中捕获未捕获的异常
有什么办法可以全局地捕获所有异常,包括Promise异常。例: window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { alert("Error occured: " + errorMsg);//or any message return false; } var myClass = function(){ } var pr = new Promise(function(resolve, react){ var myInstance = new myClass(); myInstance.undefinedFunction(); // this will throw Exception resolve(myInstance); }); pr.then(function(result){ console.log(result); }); // i know right will …

2
如何在IE11中实现承诺
我有一个简单的代码,可以在除Internet Explorer 11之外的所有浏览器上完美运行。如何使它在所有浏览器上都能正常工作? 码笔 提前致谢。 'use strict'; let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve("result"); }, 1000); }); promise .then( result => { alert("Fulfilled: " + result); }, error => { alert("Rejected: " + error); } );

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.