gpt4 book ai didi

javascript - Express js 函数与 api 不返回值

转载 作者:行者123 更新时间:2023-12-02 15:48:31 24 4
gpt4 key购买 nike

我有一个 Express 应用程序,我正在其中通过 API 调用来调用函数。我遇到的问题是从 API 调用中获取响应该功能并返回到主路由器。我知道这可能需要做代码正在异步处理,但我不明白解决这个问题的方法。

/* GET funnel page. */
router.get('/funnel', function(req, res, next) {
var score = 'test2';
score = GetQuery('Bars');
res.render('funnel', {title: score});
});

function GetQuery(query) {
var test = 'test3';
factual.get('/t/places-us', {q:query,limit: 1, filters:{"$and":[{"region":{"$eq":"NY"}},{"locality":"pittsford"}]}}, function (error, res) {
test = res.data[0].email;
});
return test;
}

最佳答案

你是对的,它确实与异步有关。问题是 API 调用不会阻塞,因此您会立即返回而无需重新分配值。解决这个问题的最简单方法是使用回调,即

/* GET funnel page. */
router.get('/funnel', function(req, res, next) {
var score = 'test2';
GetQuery('Bars', function(err, score) {
res.render('funnel', {title : score});
});
});

function GetQuery(query, cb) {
factual.get('/t/places-us', {q:query,limit: 1, filters:{"$and":[{"region":{"$eq":"NY"}},{"locality":"pittsford"}]}}, function (error, res) {
cb(error, res.data[0].email);
});
}

另一个选择是使用 Promise或类似RxJS 。这都可以让您为代码使用更流畅的样式:

promise :

/* GET funnel page. */
router.get('/funnel', function(req, res, next) {
var score = 'test2';
GetQuery('Bars').then(function(score) {
res.render('funnel', {title : score});
});
});

var getQuery = Promise.denodify(factual.get);

function GetQuery(query) {
return getQuery('/t/places-us', /*Query parameters*/).then(function (res) {
return res.data[0].email;
});
}

RxJS

/* GET funnel page. */
router.get('/funnel', function(req, res, next) {
var score = 'test2';
GetQuery('Bars').subscribe(function(score) {
res.render('funnel', {title : score});
});
});

var getQuery = Rx.Observable.fromNodeCallback(factual.get, null,
function(res) {
return res.data[0].email;
});

function GetQuery(query) {
return getQuery('/t/places-us', /*Query*/);
}

关于javascript - Express js 函数与 api 不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32022029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com