Questions tagged «q»

Q.js JavaScript Promise库。Q捕获错误并使用`then`技术处理JavaScript回调和异常。*不要*用于Angular的$ q,而要使用[angular-promise]!也请*不要*用于kx System的kdb + / q,请改用[kdb]或[q-lang]!最后,此标签不应用于有关Android 10的问题-请改用[android-10.0]标签!

2
什么是显式的Promise构建反模式,如何避免呢?
我正在编写代码,执行以下操作: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); | resolve(val); }).catch(function(err) …

10
不只承诺回调吗?
我已经开发JavaScript几年了,我完全不了解关于promise的麻烦。 看来我所做的就是改变: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); 无论如何我都可以使用像async这样的库,它有类似以下内容: api().then(function(result){ api2().then(function(result2){ api3().then(function(result3){ // do work }); }); }); 这是更多的代码和更少的可读性。我在这里什么都没得到,也不是突然变得神奇地“平坦”。更不用说必须将事情变成诺言。 那么,这里的诺言有什么大惊小怪的呢?


5
从then()返回值或Promise.resolve有什么区别
之间有什么区别? new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return "bbb"; }) .then(function(result) { console.log(result); }); 运行代码段隐藏结果展开摘要 和这个: new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return Promise.resolve("bbb"); }) .then(function(result) { console.log(result); }); 运行代码段隐藏结果展开摘要 我问,因为我得到了不同的行为使用Angular和$ http服务与链接.then()。因此,代码太多了,因此首先是上面的示例。

27
解决承诺一个接一个(即按顺序)?
考虑以下以串行/顺序方式读取文件数组的代码。readFiles返回一个promise,仅当依次读取所有文件后,promise才会解析。 var readFile = function(file) { ... // Returns a promise. }; var readFiles = function(files) { return new Promise((resolve, reject) => var readSequential = function(index) { if (index >= files.length) { resolve(); } else { readFile(files[index]).then(function() { readSequential(index + 1); }).catch(reject); } }; readSequential(0); // Start! }); }; 上面的代码可以工作,但是我不喜欢必须递归使事情顺序发生。有没有更简单的方法可以重写此代码,这样我就不必使用怪异的代码了readSequential函数了? …

1
现在我们有了ES6承诺,还有理由使用Q或BlueBird这样的承诺库吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 在Node.js添加对Promise的本机支持之后,还有理由使用Q或BlueBird之类的库吗? 例如,如果您正在启动一个新项目,并假设在该项目中您没有使用这些库的任何依赖项,那么我们是否可以说没有更多理由使用这些库了?

3
AngularJS $ q.all
我已经在angularjs中实现了$ q.all,但是我无法使代码正常工作。这是我的代码: UploadService.uploadQuestion = function(questions){ var promises = []; for(var i = 0 ; i < questions.length ; i++){ var deffered = $q.defer(); var question = questions[i]; $http({ url : 'upload/question', method: 'POST', data : question }). success(function(data){ deffered.resolve(data); }). error(function(error){ deffered.reject(); }); promises.push(deffered.promise); } return $q.all(promises); } 这是我的控制器,它调用服务: uploadService.uploadQuestion(questions).then(function(datas){ …
106 angularjs  promise  q 

1
Angular $ q。如何工作?
有人可以解释一下$q.when在AngularJS中如何工作吗?我正在尝试分析$http工作方式并发现了这一点: var promise = $q.when(config); 这是来自Chrome控制台的配置对象: Object {transformRequest: Array[1], transformResponse: Array[1], cache: Object, method: "GET", url: "/schedule/month_index.html"…} cache: Object headers: Object method: "GET" transformRequest: Array[1] transformResponse: Array[1] url: "/schedule/month_index.html" __proto__: Object 接下来发生什么?如何解决或拒绝该对象?
95 angularjs  deferred  q 

8
用Node.js中的promise替换回调
我有一个简单的节点模块,该模块连接到数据库,并具有几个接收数据的功能,例如此功能: dbConnection.js: import mysql from 'mysql'; const connection = mysql.createConnection({ host: 'localhost', user: 'user', password: 'password', database: 'db' }); export default { getUsers(callback) { connection.connect(() => { connection.query('SELECT * FROM Users', (err, result) => { if (!err){ callback(result); } }); }); } }; 该模块将从另一个节点模块中以这种方式调用: app.js: import dbCon from './dbConnection.js'; dbCon.getUsers(console.log); …

9
您如何正确地从诺言中返回多个值?
我最近几次遇到某种情况,但我不知道如何正确解决。假设以下代码: somethingAsync() .then( afterSomething ) .then( afterSomethingElse ) function afterSomething( amazingData ) { return processAsync( amazingData ); } function afterSomethingElse( processedData ) { } 现在可能会出现我想访问amazingDatain的情况afterSomethingElse。 一种明显的解决方案是从中返回数组或哈希afterSomething,因为好了,您只能从函数中返回一个值。但是我想知道是否有办法afterSomethingElse接受2个参数并同样调用它,因为这似乎很容易记录和理解。 我只是想知道这种可能性,因为存在Q.spread,它的功能类似于我想要的。
86 javascript  promise  q 

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

2
在render方法中使用承诺来渲染React组件
我有一个组件,该组件获取作为道具的项目map集合,并将其作为呈现为父组件子项的组件集合。我们使用存储WebSQL为字节数组的图像。在map函数中,我从项目中获取图像ID,并异步调用,DAL以获取图像的字节数组。我的问题是我无法将诺言传播到React中,因为它不是设计来处理渲染中的诺言的(无论如何我还是不能说的)。我来自C#背景,所以我猜我在寻找类似await关键字的内容来重新同步分支代码。 该map函数看起来像这样(简化): var items = this.props.items.map(function (item) { var imageSrc = Utils.getImageUrlById(item.get('ImageId')); // <-- this contains an async call return ( <MenuItem text={item.get('ItemTitle')} imageUrl={imageSrc} /> ); }); 该getImageUrlById方法如下所示: getImageUrlById(imageId) { return ImageStore.getImageById(imageId).then(function (imageObject) { //<-- getImageById returns a promise var completeUrl = getLocalImageUrl(imageObject.StandardConImage); return completeUrl; }); } 这是行不通的,但是我不知道我需要修改什么才能使它工作。我尝试向链中添加另一个Promise,但是由于我的render函数返回一个Promise而不是合法的JSX,因此出现错误。我当时在想,也许我需要利用一种React生命周期方法来获取数据,但是由于我需要props已经存在该方法,所以我不知道该在哪里进行操作。
74 javascript  reactjs  q 

13
While循环与承诺
用诺言做诸如while循环之类的事情的惯用方式是什么。所以: 如果条件仍然存在,请执行某项操作,然后再次重复执行其他操作。 dosomething.then(possilblydomoresomethings).then(finish) 我这样做是想知道是否有更好/更理想的方法? var q = require('q'); var index = 1; var useless = function(){ var currentIndex = index; console.log(currentIndex) var deferred = q.defer(); setTimeout(function(){ if(currentIndex > 10) deferred.resolve(false); else deferred.resolve(true); },500); return deferred.promise; } var control = function(cont){ var deferred = q.defer(); if(cont){ index = index + 1; …
74 node.js  loops  promise  q 
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.