Tag: 诺言

如何使承诺的打字稿工作?

所以,我在节点/ express / mongoose应用程序上使用打字稿,我试图让我的代码typecheck没有错误。 我定义这个mongoose模型: import * as mongoose from 'mongoose'; const City = new mongoose.Schema({ name: String }); interface ICity extends mongoose.Document { name: string } export default mongoose.model<ICity>('City', City); 和这个控制器: import * as Promise from 'bluebird'; import CityModel from '../models/city'; export type City = { name: string, id: string }; export function getCityById(id […]

节点mysql错误不被Promise拒绝

我正在做一个简单的数据库调用包装在一个承诺,并试图捕捉错误,并通过它的承诺reject(),但拒绝不被处理或由呼叫代码冒泡备份。 当mysql调用失败时,代码停止执行。 mysqlcallback中的错误是: 拒绝QUERY {错误:您的SQL语法错误; 检查对应于您的MariaDB服务器版本的手册,在“?”附近使用正确的语法。 在第1行 这里是数据库查询代码: this.query = function(sql, params) { return new Promise((resolve, reject) => { _pool.query(sql, params, function(err, result) { if (err) { console.log("REJECTING QUERY", err); return reject(err); } resolve(result); }); }); } 这里是调用代码: this.createUser = function(data) { var query = "INSERT into users SET ?"; return new Promise((resolve, reject) => […]

对一组元素做多个承诺

我有一个objectIds列表,我想要去不同的集合,并根据每个Id做操作。 我宁愿一个接一个地按顺序执行操作(依次) var removeOperation = function(objectified){ return Comps.findOne({reviews : objectified}).populate([{ path: "reviews", match : {_id : objectified}}]) } var firstCheckIfAnonHasTheIdInReviewsArrayIfThereDeleteIt = function(objectified){ var query = {reviews : objectified}; var update = {$pull : {reviews : objectified}}; var option = {new :true}; return Anon.findOneAndUpdate(query, update, option ); }; var thenCheckIfUserHasTheIdInReviewsArrayIfThereDeleteIt = function(objectified){ var query = {reviews […]

图像刮板节点JS。 如何将callback函数发送到结果数组

我试图构build简单的应用程序来构buildimgparsing器,并开始使用库图像刮板( 节点图像刮板 )。 并面临一个问题。 问题是:我怎样才能得到最终的对象数组 scraper.scrape(function(image) { images_list.push(image); }) 诺言 – 不起作用,我试过在函数参数里面调用它也没给我结果。

forEach Loop中的asynchronousfindOne()操作

我很难理解JavaScript的承诺。 我正在寻找符合一定条件的对象的Mongoose模型,如果它们存在,我想将对象变成一个普通的JS对象,并添加一个属性。 不幸的是,我无法将自己的头围绕在如何确保我的forEach循环将在我的诺言最终解决之前完全运行。 请看我的代码。 // Called to check whether a user has participated in a given list of challenges participationSchema.statics.getParticipation = function(user, challenges) { return new Promise((resolve, reject) => { challengesArray = []; challenges.forEach((challenge) => { // Model#findOne() is Async–how to ensure all these complete before promise is resolved? Participation.findOne({user, challenge}) .then((res) => { if […]

基于承诺的编程,可能与否?

我已经学习了很多关于你的导游,朋友的承诺 但在学习承诺之后,我的脑海里就产生了一个问题: 是真的(可能)build立整个node.js项目只有承诺? 如果不是的话: callback在哪里比诺言更有用?

Promise <T>的TypeScript参数,为什么不承诺<T1,T2>?

我想知道为什么Promise<T>不需要两个参数,如下所示: Promise<T1,T2> 。 例如: new Promise(function(resolve,reject){ … err ? reject(err) : resolve(val); }); =>🌷🌷🌷如何告诉消费者关于err 和 val两种types的承诺? 🌷🌷🌷 我希望T1是Errortypes, T2是val的types。 为什么不承诺采取两个types的参数? 因为它正式只有一个,我假设参数是传递给resolve()的值的types? 是否只有一个参数,因为我们期望一个Errortypes总是被传递给reject() ? 进一步的细节,我们可以传递一个string来拒绝: new Promise(function(resolve,reject){ let err = 'just a string, not an object'; let val = {foo:'bar'}; err ? reject(err) : resolve(val); }); 请注意,我们可以将错误强制为某种types ,如下所示: return function(){ return Promise.resolve('whatever') .catch(function(){ return Promise.reject('always a […]

在链式Promisified函数中创buildMongoDB文档

应用程序每15分钟运行一个进程,以下列格式创build许多输出文件: <timestamp>-<piece-code>.txt 由进程创build的所有文件将共享“时间戳”组件,但“片段代码”将有所不同,这意味着我有一个时间戳到多个片断的关系,我想保存在mongodb为: "Registry" { time: (numeric) } "Piece" { file: (string), piece: (string), registry: (reference) } 在这个过程中,我想查找是否已经创build一个时间戳 ,以避免重复,但我的代码似乎无法做到这一点。 在此先感谢您的帮助! const mongoose = require('mongoose'); const Registry = require('../model/Registry'); const Piece = require('../model/Piece'); mongoose.Promise = require('bluebird'); // Set up default mongoose connection let mongoDB = 'mongodb://127.0.0.1/numbers'; mongoose.connect(mongoDB, { useMongoClient: true }); //Get the default connection let […]

这是一个承诺错误? 提交成功login后,Selenium-webdrivertesting无法find元素

我已经写了下面的testing,使用seleniumwebdriver。 (摩卡和柴也有一些设置,但是我还没有开始工作。) 我的问题是,testing运行到我希望它等待页面加载的位置,并findID为“usergreeting”的元素,其中包含文本“Welcome”+用户名。 此时,testing会抛出错误: Uncaught NoSuchElementError: Unable to locate element: {"method":"id","selector":"usergreeting"} Command duration or timeout: 986 milliseconds 不过,我可以看到(看着Firefox浏览器的步骤)页面已经加载并显示'#usergreeting'元素。 我不知道我做错了什么,但是我显然做错了。 我可能没有把握整个承诺的概念。 (请参阅我写了driver.wait()语句的部分。) 谢谢你的帮助。 var assert = require('assert'), fs = require('fs'), webdriver = require('selenium-webdriver'); require('mocha-as-promised')(); var chai = require('chai'); var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); chai.should(); describe('Login test', function() { var driver, configObj, username, pwd; this.timeout(6000); before(function(done) { […]

不太了解Q诺库

我在这里查看Q库: https : //github.com/kriskowal/q 这是我如何写一个函数与callback: function token(callback) { require('crypto').randomBytes(34, function(ex, buf) { var token = buf.toString('hex'); callback(token); }) } exports.generateToken = token; 那么我会: require('../models/security').generateToken(function (token) { console.log("here " + token) }) 那我怎么做呢?