使用asynchronousNPM模块
所以…我最近遇到这个节点模块: asynchronous 。 我只需要针对下面的情况进行一点“展示和说明”或最佳实践方法。 下面你可以看到我的函数GetBearerToken
,它带有一个参数{bearer_token:token}
没有问题。
我的问题是variablesss
。 我想在这个函数之外使用它,并把它传递给另一个函数来做一些事情。 当然,当我尝试访问ss
,它是不确定的。 我已经尝试了一些文档中指出的工作方式,但我显然错过了一些东西。 所以任何帮助将是伟大的…谢谢
GetBearerToken({ bearer_token: token }, function(error, result) { if (error) throw error; if (result) { var resultset var i; for (i = 0; i < result.length; i++) { resultset = (simpleObjectify(result[i].meta, result[i].rows)) } var jstring = JSON.stringify(resultset); var obj = JSON.parse(jstring); var ss = obj[0].uuid; console.log(ss) })
函数ss
是undefined
。
首先阅读这个
JavaScript中variables的范围是什么?
你可以尝试使用.waterfall
方法
瀑布(任务,[callback])
按顺序运行函数的任务数组,每个函数将结果传递给数组中的下一个。 但是,如果任何任务将错误传递给自己的callback,则不执行下一个函数,并立即调用主callback并返回错误。
你正在努力完成的一个例子
async.waterfall([ function(callback) { GetBearerToken({ bearer_token: token }, function(error, result) { if (error) throw error; if (result) { // *note* don't forget to handle the result properly if an error occurs or the result is not what you expected. var resultset var i; for (i = 0; i < result.length; i++) { resultset = (simpleObjectify(result[i].meta, result[i].rows)) } var jstring = JSON.stringify(resultset); var obj = JSON.parse(jstring); var ss = obj[0].uuid; callback(null, ss); // call the next callback in waterfall with ss value } ) }, function(arg1, callback) { // arg1 now equals ss value callback(null,'all completed'); } ], function(err, result) { // result now equals 'all completed' });
但是由于上面的代码在debugging时似乎已经朝着错误的方向迈进了一步。 但是看一下.waterfall
例子,它分解了callback,然后调用.waterfall
方法。