Articles of 承诺

阻止使用迭代的JavaScript嵌套callback

目前我使用的承诺,以防止在我的代码嵌套callback的需要,但我已经遇到挫折。 在这种情况下,我使用节点的request-promise和cheerio来模拟服务器上的jQuery。 不过,在某些时候,我需要调用jQuery.each()来为每个<a>元素创build一个请求。 有没有什么办法可以使用promise来防止这种嵌套的callback? request("http://url.com").then(function (html) { var $ = cheerio.load(html); var rows = $("tr.class a"); rows.each(function (index, el) { //Iterate over all <a> elements, and send a request for each one. //Can this code be modified to return a promise? //Is there another way to prevent this from being nested? request($(el).attr("href")).then(function (html) { var […]

在promise链中创build错误

我将如何检查一个属性的JSON,如果它缺less返回一个错误退出和捕捉链? var Promise = require("bluebird"); var fs = Promise.promisifyAll(require("fs")); fs.readFileAsync("myfile.json").then(JSON.parse).then(function (json) { if (!json.prop) return new Error("missing prop"); return json; }).catch(SyntaxError, function (e) { console.error("file contains invalid json"); }).catch(Promise.OperationalError, function (e) { console.error("unable to read file, because: ", e.message); }); 从蓝鸟文件取得的例子。

蓝鸟承诺和Sequelize模拟交易primefaces性

我正在使用bluebird.js承诺和sequelize.js来模拟我的网站上的交易。 基本上我尝试在processTransactions中做一些事情,如果一切正常,我会t.commit()事务,否则我会t.rollback()事务。 另外我正在使用bluebird.js承诺做控制stream程。 这里是代码: var processTransactions = function(transactionmain, transactionlist, t){ // code to process transactions }; var processtransaction = function(transaction_id) { // t need to be passed in so we can choose // t.commit() or t.rollback() the transaction sequelize.transaction(function(t){ return Promise.resolve({}).bind({transactionmain: […], transactionlist: […]}) .then(function(){ return [this.transactionmain, this.transactionlist, t]; }) .spread(processTransactions) .then(function(){ t.commit().success(function() {}) }) […]

debugging器可以调用Javascript的承诺?

我正在尝试使用我在github上find的库 ,无法debugging为什么代码没有被触发。 //slackTypeForm.js var Promise = require('bluebird'), PromiseObject = require('promise-object')(Promise), request = require('request'), _ = require('lodash'), Cubby = require('Cubby'); Promise.promisifyAll(request); var SlackAutoInviter = PromiseObject.create({ initialize: function ($config) { this._typeformUID = $config.typeformUID; this._typeformKey = $config.typeformKey; this._typeformEmailField = $config.typeformEmailField; this._typeformFirstNameField = $config.typeformFirstNameField; this._typeformLastNameField = $config.typeformLastNameField; this._slackName = $config.slackName; this._slackToken = $config.slackToken; this._dataFile = $config.dataFile; this._cubby = new […]

在node.js中使用promise链接数据库查询

我试图使用spread方法来积累我已经读过的Q.js在这个线程中承诺的结果。 它在另一个代码块中工作,但不在下面的app.get例子中。 我想链接查询使用Sequelize和mongoose和传递所有返回的数据传播的方法。 这是我的尝试: var db = require('./db/managedb'); // Sequelize var mongo_models = require('./db/mongo_model')(mongoose); var WB = mongo_models.Webdata, Est = mongo_models.Estimate; app.get('/p/:tagId', function(req, res){ var filename = req.param("tagId"); var mysql = db.db.query('CALL procedure()').then(function(rows) { console.log(rows); }); // Sequelize var nosql = WB.find().exec(function(err,k){ console.log(k); }) // Mongoose var nosql2 = Est.find().exec(function(err,la){ console.log(la); }) // Mongoose Q.try(function(){ […]

如何在Sequelize Js中使用Promise来返回实体

var user = db.User.find({ where: { username: username }}).then(function(user) { console.log("Authenticate"+user.authenticate(password)); if (!user) { return null; } else if (!user.authenticate(password)) { return null; } else { return user; } }).catch(function(err){ return err; }); 我用节点JS使用Sequelize JS。 我想要的用户匹配where子句的对象。 但是当我从function返回。 但它进入无限循环。 我是Node Js的新手,我不知道如何在Node Js中使用Promise。 请帮我一下

node.js Q承诺然后链接承诺

该文件说,承诺链接工程 return getUsername() .then(function (username) { return getUser(username); }) .then(function (user) { 如果下面的工作也不会好起来吗? return getUsername() .then(getUser) .then(function (user) { 我偶然发现了这一点,因为这是我直觉上所做的,并没有奏效。 非常感谢

NodeJS Promise行为查询

我正在用nodejs中的Promise进行试验,以更好地理解它是如何工作的。 我有部分工作代码,但我不确定是否正确使用它。 我的意图是将错误或正确的结果传回给调用者函数。 所有这些callback似乎都变得复杂了。 这是我到目前为止。 //This is my main CALLER function function query_mcafee_mssql_type(database, node_name, type) { return new Promise(function (fulfill, reject) { switch (type) { case "currentDefinitionDate": computeCurrentDefinitionResult(database, node_name) .then(function (result) { console.log('query_mcafee_mssql_type' + result); fulfill(result); }); break; } }); } function computeCurrentDefinitionResult(database, node_name) { return new Promise(function (fulfill, reject) { var leaf_sql_query = "SELECT […]

蓝鸟 – promisification – promisify所有'email-templates'节点模块 – 发送邮件

我正试图将email-templates节点模块转换为承诺。 我正在使用蓝鸟 promisification,但它不能转换。 var emailTemplates = Promise.promisifyAll(require('email-templates')); Promiseification节点模块是否支持这种转换或者我是否有任何错误? 编辑: 我现在正在做这个,但是要把它转换成蓝鸟的承诺。 var emailTemplates = require('email-templates'); var path = require('path'); var templatesDir = path.resolve(__dirname, '../..', 'assets/templates'); var postmark = require('postmark'); var postmarkKey = MY_POSTMARK_KEY; var postmarkClient = postmark(postmarkKey); module.exports = { sendEmail : function (templateName, locals, callback) { emailTemplates(templatesDir, function (err, template) { if (err) return callback(err, […]

调用保存方法后Sails没有任何事情发生

对不起,这是我的第一个nodeJs应用程序,我正在使用SailsJs,这是我的代码 update: function (req, res) { Cargo.findOne({id: req.param('id')}).exec(function (err,result) { result.currency = 2; if(err) { console.log(err); } result.save(function(err,model){ console.log(err); console.log(model); console.log('in'); }); console.log("testing"); }) }, 我一直在我的控制台日志中“testing”,并没有得到任何login保存方法。 我做错了吗?