我正在开发一个项目,我需要在文本中将url处理为短网址并发布更新后的文本。
工作环境是节点js。
下面的代码将url转换为short,但因为它是asyc我在进一步处理之前无法使用它。
var url='myurl';
console.log("before bitly");
Bitly.shorten({longUrl: url}, function(err, results) {
// Do something with your new, shorter url...
var obj = JSON.parse(results);
shorturl= obj.data.url;
console.log(shorturl);
});
console.log("after bitly");
输出: 在bitly |之后| " SHORTURL *
Expeced输出: 在bitly之前" shorturl * | bitly
答案 0 :(得分:0)
回调不是处理异步处理的最佳方式,最好使用promises或async await。
异步语法使其看起来像同步代码,但您需要最新版本的节点(V8)。关于mdn的例子没有多大意义,因为他们会调用异步函数,然后将结果作为一个承诺来处理,如果这是你如何使用它,你可以坚持承诺。
Promise看起来很复杂但是一旦你理解了JavaScript event loop如何工作,它就会变得更容易。
根据bitly documentation,您的代码可能看起来像承诺:
grab