Questions tagged «promise»

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

4
我如何正确地用摩卡咖啡和柴测试诺言?
以下测试的行为异常: it('Should return the exchange rates for btc_ltc', function(done) { var pair = 'btc_ltc'; shapeshift.getRate(pair) .then(function(data){ expect(data.pair).to.equal(pair); expect(data.rate).to.have.length(400); done(); }) .catch(function(err){ //this should really be `.catch` for a failed request, but //instead it looks like chai is picking this up when a test fails done(err); }) }); 我应该如何正确处理被拒绝的承诺(并进行测试)? 我应该如何正确处理失败的测试(即:expect(data.rate).to.have.length(400);? 这是我正在测试的实现: …
148 node.js  promise  mocha  chai 

9
了解Node.js中的承诺
据我了解,有三种调用异步代码的方法: 活动,例如 request.on("event", callback); 回调,例如 fs.open(path, flags, mode, callback); 承诺 我找到了节点承诺库,但是我不明白。 有人可以解释什么是诺言,为什么我要使用它? 另外,为什么将它从Node.js中删除?

12
如何获得承诺的价值?
我正在从Angular的文档中查看此示例,$q但我认为这可能总体上适用于Promise。下面的示例从他们的文档中逐字复制,并包含注释: promiseB = promiseA.then(function(result) { return result + 1; }); // promiseB will be resolved immediately after promiseA is resolved and its value // will be the result of promiseA incremented by 1 我不清楚这是如何工作的。如果我可以调用.then()第一个的结果.then()并将它们链接起来(据我所知),那么它promiseB就是一个类型为Promise的对象Object。这不是一个Number。那么,它们的含义是“其值将是promiseA的结果加1”? 我应该以这种方式访问promiseB.value吗?成功回调如何返回承诺并返回“结果+ 1”?我想念一些东西。

22
打字稿:错误TS2693:“承诺”仅引用一种类型,但在此处用作值
我正在尝试将Typescript用于我的AWS Lambda,并且在我使用promise的地方都遇到以下错误。 错误TS2693:'Promise'仅指一种类型,但在此处被用作值。 我尝试在代码中使用以下变体 使用Promise构造函数 responsePromise = new Promise((resolve, reject) => { return reject(new Error(`missing is needed data`)) }) 使用Promise.reject responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`)); 版本号 以下是我的开发依赖项中的版本: "typescript": "^2.2.2" "@types/aws-lambda": "0.0.9", "@types/core-js": "^0.9.40", "@types/node": "^7.0.12", tsconfig.json的内容 { "compileOnSave": true, "compilerOptions": { "module": "commonjs", // "typeRoots" : ["./typings", "./node_modules/@types"], "target": …

4
AngularJS:在哪里使用promise?
我看到了一些正在使用的Facebook登录服务的示例 Promise访问FB Graph API。 例子1: this.api = function(item) { var deferred = $q.defer(); if (item) { facebook.FB.api('/' + item, function (result) { $rootScope.$apply(function () { if (angular.isUndefined(result.error)) { deferred.resolve(result); } else { deferred.reject(result.error); } }); }); } return deferred.promise; } 和使用过的服务 "$scope.$digest() // Manual scope evaluation"获得响应时 范例2: angular.module('HomePageModule', []).factory('facebookConnect', function() …

3
事件循环上下文中微任务和宏任务之间的区别
我刚读完Promises / A +规范,偶然发现了术语microtask和macrotask:请参阅http://promisesaplus.com/#notes 我以前从未听说过这些术语,现在我很好奇可能会有什么不同? 我已经尝试过在网上找到一些信息,但是我发现的只是w3.org存档中的这篇文章(没有向我解释这些区别):http : //lists.w3.org/Archives /Public/public-nextweb/2013Jul/0018.html 另外,我发现了一个名为“ macrotask”的npm模块:https : //www.npmjs.org/package/macrotask 再次说明,到底有什么区别。 我所知道的是,它与事件循环有关,如https://html.spec.whatwg.org/multipage/webappapis.html#task-queue 和https://html.spec.whatwg中所述.org / multipage / webappapis.html#perform-a-microtask-checkpoint 鉴于此WHATWG规范,我知道理论上我应该可以自己提取差异。但是我确信,专家的简短解释也可以使其他人受益。

13
中断promise链,并根据该链中被破坏(被拒绝)的步骤调用函数
更新: 为了帮助将来的读者,我创建了pluma's answer的此演示。 题: 我的目标似乎很简单。 step(1) .then(function() { return step(2); }, function() { stepError(1); return $q.reject(); }) .then(function() { }, function() { stepError(2); }); function step(n) { var deferred = $q.defer(); //fail on step 1 (n === 1) ? deferred.reject() : deferred.resolve(); return deferred.promise; } function stepError(n) { console.log(n); } …

1
期货与承诺
我将自己与未来和承诺之间的差异弄混了。 显然,它们具有不同的方法和内容,但是实际用例是什么? 是吗?: 当我管理一些异步任务时,我使用future来获取“ future”的值 当我是异步任务时,我使用promise作为返回类型,以允许用户从我的promise中获得未来
134 c++  c++11  promise  future 

8
NodeJS UnhandledPromiseRejection警告
因此,我正在测试依赖于事件发射器的组件。为此,我想出了将Promises与Mocha + Chai结合使用的解决方案: it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); }, 100); }).then((state) …

5
从Vuex操作返回承诺
最近,我开始将内容从jQ迁移到VueJS这样的结构化框架,我喜欢它! 从概念上讲,Vuex对我来说是一种范式转换,但是我有信心我知道现在的全部情况,并且完全可以理解!但是存在一些小的灰色区域,主要是从实现的角度来看。 我觉得这个设计很好,但是不知道它是否与单向数据流的Vuex 周期相矛盾。 基本上,从动作中返回一个promise(类似)对象是否被视为一种好习惯?我将它们视为异步包装程序,带有失败状态等,因此看起来很适合返回承诺。相反,变异器只是改变事物,是商店/模块中的纯结构。

6
为什么我不能扔在Promise.catch处理程序中?
为什么我不能只Error在catch回调内部抛出错误,让进程像在其他作用域中一样处理错误? 如果我不这样做,那么console.log(err)什么也不会打印出来,我也不知道发生了什么。这个过程刚刚结束... 例: function do1() { return new Promise(function(resolve, reject) { throw new Error('do1'); setTimeout(resolve, 1000) }); } function do2() { return new Promise(function(resolve, reject) { setTimeout(function() { reject(new Error('do2')); }, 1000) }); } do1().then(do2).catch(function(err) { //console.log(err.stack); // This is the only way to see the stack throw err; // …

9
许诺可以对onFulfilled有多个参数吗?
我在这里遵循规范,并且不确定是否允许使用多个参数调用onFulfilled。例如: promise = new Promise(function(onFulfilled, onRejected){ onFulfilled('arg1', 'arg2'); }) 这样我的代码: promise.then(function(arg1, arg2){ // .... }); 会同时收到arg1和arg2? 我不在乎任何特定的Promise实现如何实现,我希望严格遵循w3c规范来实现Promise。

18
如何使用jQuery $ .getScript()方法包含多个js文件
我正在尝试将javascript文件动态包含到我的js文件中。我对此进行了一些研究,发现jQuery $ .getScript()方法是理想的选择。 // jQuery $.getScript('/path/to/imported/script.js', function() { // script is now loaded and executed. // put your dependent JS here. // what if the JS code is dependent on multiple JS files? }); 但是我想知道这种方法是否可以一次加载多个脚本?我之所以这样问,是因为有时我的JavaScript文件依赖于多个js文件。 先感谢您。

5
为什么我的异步函数返回Promise {<pending>}而不是值?
我的代码: let AuthUser = data =&gt; { return google.login(data.username, data.password).then(token =&gt; { return token } ) } 当我尝试运行这样的东西时: let userToken = AuthUser(data) console.log(userToken) 我越来越: Promise { &lt;pending&gt; } 但为什么? 我的主要目标是将令牌(从令牌google.login(data.username, data.password)中返回承诺)转换为变量。然后才执行一些操作。

5
您可以在返回之前解决angularjs承诺吗?
我正在尝试编写一个返回诺言的函数。但是有时候,所请求的信息会立即可用。我想将其包装在一个承诺中,这样消费者就不必做出决定了。 function getSomething(id) { if (Cache[id]) { var deferred = $q.defer(); deferred.resolve(Cache[id]); // &lt;-- Can I do this? return deferred.promise; } else { return $http.get('/someUrl', {id:id}); } } 并像这样使用它: somethingService.getSomething(5).then(function(thing) { alert(thing); }); 问题在于,对于预解析的Promise不会执行回调。这是合法的事情吗?有没有更好的方法来处理这种情况?
125 angularjs  promise 

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.