Tag: 承诺

承诺待定

我的代码: let AuthUser = data => { return google.login(data.username, data.password).then(token => { return token } ) } 而当我尝试运行这样的东西: let userToken = AuthUser(data) console.log(userToken) 我越来越: Promise { <pending> } 但为什么? 我的主要目标是将google.login(data.username, data.password)令牌返回给一个variables。 只有这样才能做出一些行动。

使用promise来处理node.js中的MySQL返回值

我有一个python背景,目前正在迁移到node.js. 由于其asynchronous性质,我有调整到node.js的问题。 例如,我试图从MySQL函数返回一个值。 function getLastRecord(name) { var connection = getMySQL_connection(); var query_str = "SELECT name, " + "FROM records " + "WHERE (name = ?) " + "LIMIT 1 "; var query_var = [name]; var query = connection.query(query_str, query_var, function (err, rows, fields) { //if (err) throw err; if (err) { //throw err; console.log(err); logger.info(err); […]

如何等待小溪完成pipe道? (的NodeJS)

我有一个承诺的循环数组,所以我用Promise.all来通过它们,然后调用。 let promises = []; promises.push(promise1); promises.push(promise2); promises.push(promise3); Promise.all(promises).then((responses) => { for (let i = 0; i < promises.length; i++) { if (promise.property === something) { //do something } else { let file = fs.createWriteStream('./hello.pdf'); let stream = responses[i].pipe(file); /* I WANT THE PIPING AND THE FOLLOWING CODE TO RUN BEFORE NEXT ITERATION OF FOR […]

蓝cor协同使用

我试图使用蓝鸟的协程如下: var p = require('bluebird'); //this should return a promise resolved to value 'v' var d = p.coroutine(function*(v) { yield p.resolve(v); }); //however this prints 'undefined' d(1).then(function(v){ console.log(v); }); 这里有什么不正确的?

ES6承诺 – 在承诺链中调用同步function

我目前正在尝试承诺,并有一个非常基本的问题! 在承诺链中,调用同步函数是不好的做法吗? 例如: .then(function(results) { if(checkIfResultInMemory(results) === true){ return getTotalFromMemory() } return results; }) 还是应该我的同步function重构承诺还呢?

在第一级尝试抓住错误在JavaScript承诺

所以,我想我的第一级捕获是处理错误的一个。 无论如何要把我的错误传播到第一次接触? 参考代码,不工作(还): Promise = require('./framework/libraries/bluebird.js'); function promise() { var promise = new Promise(function(resolve, reject) { throw('Oh no!'); }); promise.catch(function(error) { throw(error); }); } try { promise(); } // I WANT THIS CATCH TO CATCH THE ERROR THROWN IN THE PROMISE catch(error) { console.log('Caught!', error); }

在之前和之后放置捕获物

我很难理解把.catch(function(err)BEFORE和AFTER then在嵌套promise中的区别。 test1Async(10).then(function (lol) { return test2Async(22) .then(function (lol) { return test3Async(100); }).catch(function (err) { throw "ERROR AFTER THEN"; }); }).then(function (results) { console.log(results); }).catch(function (err) { console.log(err); }); 和这个 test1Async(10).then(function (lol) { return test2Async(22) .catch(function (err) { throw "ERROR BEFORE THEN"; }) .then(function (lol) { return test3Async(100); }); }).then(function (results) { console.log(results); }).catch(function (err) […]

如何将parameter passing给promise函数

这似乎是一个愚蠢的问题,但我是这个主题的新手。 我正在承诺节点js。 我想将parameter passing给promise函数。 但是我无法弄清楚。 someModule.someFunction.then(username, password,function(uid) { /*stuff */ } 和function是类似的 var someFunction = new Promise(username, password, function(resolve, reject) { /*stuff using username, password*/ if ( /* everything turned out fine */ ) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });

Javascript Promise node.js?

我是一个node.js新手,我想了解如何组织一些非阻塞方式的逻辑节点喜欢它。 我有一套环境['stage','prod']和另外一组参数叫做品牌['A','B','C']和一套设备['phone','tablet'] 。 在节点的callback驱动的世界中,我有这样的: brands.forEach( function(brand) { devices.forEach( function(device) { var tapeS = getTape('stage',brand,device); // bad example…tapeS never set var tapeP = getTape('prod' ,brand,device); }) } ) // more stuff here function getTape(env,brand,device) { var req = http.request(someOptions,function(resp) { // ok, so we handle the response here, but how do I sequence this with all […]

JavaScript承诺不传递所有参数(使用Q)

我无法通过所有参数。 我的承诺callback只接收一个而不是三个: var asyncFunction= function(resolve) { setTimeout(function() { resolve("Some string that is passed", "and another", "third"); }, 1000); }; var promiseFunction = function () { var deferred = Q.defer(); asyncFunction(deferred.resolve); return deferred.promise; }; promiseFunction().then(function() { // Only one argument is passed here instead of 3 // { '0': 'Some string that is passed' } console.log(arguments); […]