Node.js 在承诺之间发送参数

Node.js 在承诺之间发送参数,node.js,asynchronous,Node.js,Asynchronous,我正在用node.js执行一个异步进程。使用承诺。我的代码如下: var net = require('net'); var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database('MyBBDD.db'); var net = require('net'); var Q = require("q"); var firstFunction = function(v_user, v_mystring){

我正在用node.js执行一个异步进程。使用承诺。我的代码如下:

var net = require('net');
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('MyBBDD.db');
var net = require('net');
var Q = require("q");

var firstFunction = function(v_user, v_mystring){
    var deferred = Q.defer();
    var mi;
    stmt = db.prepare("SELECT text1 FROM my_table WHERE user = ?");
    stmt.bind (v_user);
    stmt.get(function(error,row){
        if(!error && row){
                deferred.resolve({string: v_mystring, query: row.text1});
        }
            deferred.reject(new Error(error));
    });
    return deferred.promise;    
};

var secondFunction = function(result){
    console.log(result.string);
    console.log(result.query);
};

firstFunction('user000','Hello').then(secondFunction);
所有代码都可以正常工作,但现在,我想在secondFunction中将从firstFunction接收到的字符串与其他字符串(例如“MyNewString”)连接起来。 有人知道我该怎么解决吗?我可以将“MyNewString”从第一个函数发送到第二个函数吗? 提前谢谢


致以最诚挚的问候。

解决这一问题的最佳方法是用目标来解决承诺。您可以返回包含所需值的对象,而不是只返回一个值——查询数据库的结果

与:
function firstFunction(字符串){
返回Promise.resolve({string:string,query:'some result of query'})
}
函数secondFunction(其他文本、结果){
console.log(result.query)//您仍然可以访问查询结果
返回result.string+otherText
};

firstFunction('foo')。然后(secondFunction.bind(null,'bar'))。然后(console.log)解决此问题的最佳方法是使用对象解决承诺。您可以返回包含所需值的对象,而不是只返回一个值——查询数据库的结果

与:
function firstFunction(字符串){
返回Promise.resolve({string:string,query:'some result of query'})
}
函数secondFunction(其他文本、结果){
console.log(result.query)//您仍然可以访问查询结果
返回result.string+otherText
};

firstFunction('foo')。然后(secondFunction.bind(null,'bar'))。然后(console.log)
Krzysztof,感谢您的回复,我是使用node.js的新手,我对您的代码有一个问题。拜托,你能用我所有的代码来写这个例子吗?因为如果不是,我现在不知道该怎么做。调用我的第一个函数时是否可以发送我的“其他文本”?例如:firstFunction(“otherText”)。然后。。。然后执行sql查询,将查询结果和“otherText”发送到secondFunction,并在secondFunction中连接和打印。谢谢您需要使用包含两个键的对象来解析
firstFunction
的承诺:传递的文本和查询结果一些edid已经生成-我猜这是您正在寻找的东西,或者它足够接近它是的,这正是我想要的:),但我还有另外一个问题,因为当你写“某个结果”时,是不是我的查询结果?但是当我使用“return Promise.resolve”时,我不能在“stmt.get(function(error,row){”中使用,因为字符串将是“未定义”的,并且在“stmt.get(function(error,row){”之外,因为我不能访问我的“row.text1”。我不知道我是否可以解释我自己…你可能想要类似于
deferredired.resolve的东西({str:text,query:row.text1})
。之后,在结果中的第二个函数中,您将可以访问具有这两个属性的对象krzysztof,感谢您的回复,我是新使用node.js的,我对您的代码有一个问题。请,您可以使用我所有的代码编写示例吗?因为如果没有,我现在怎么做。是否可以发送我的“其他文本”当调用我的firstFunction时?例如:firstFunction(“otherText”)。然后…执行sql查询并将查询结果和“otherText”发送给secondFunction并在secondFunction中连接和打印。谢谢!!您需要使用包含两个键的对象来解析
firstFunction
的承诺:传递的文本和查询结果一些edid已经生成-我猜这是您正在寻找的东西,或者它足够接近它是的,这正是我想要的:),但我还有其他问题,因为当您编写'some result'时,它是我查询的结果,对吗?但是当我使用“return Promise.resolve”时,我不能在“stmt.get(function(error,row){”中使用,因为字符串将是'undefined',并且在“stmt.get(function(error,row){”之外,因为我无法访问我的“row.text1”。我不知道我是否可以解释我自己…您可能需要类似于
deferred.resolve({str:text,query:row.text1})
。之后,在第二个函数中,您将访问具有这两个属性的对象