node.js中的并行callbackUniverse?

我试图在node中实现shopify api,并且想要同步调用post请求,因为我想在发布后检索产品id并将其存储在数组中。 我正在使用一个名为deasync的库作为同步等待循环。 该脚本以前工作,突然停止工作。 当我login我的调用没有deasync循环时,我看到从shopify返回的响应,但是,当我运行我的脚本deasync循环,我的标识符保持空,deasync循环不断迭代。 我对node.js中的asynchronous请求比较陌生。 我的标识符variables的范围似乎是正确的。 我现在唯一可以想象的是,callback发生在一个并行的node.js宇宙中,与我的while循环分开。 任何帮助将不胜感激,thx!

function postProduct(Store, product, variants) { var identifier = null; var post_data = { "product": product }; Shopify.post('/admin/products.json', post_data, function(err, data, headers) { identifier = { id: data.product.id, price: data.product.price, variants: variants }; }); while(identifier === null) { require('deasync').runLoopOnce(); } return identifier; } 

所有这些deasync解决scheme都不能保持稳定,因为它们取决于内部引擎的实现。

只是尝试学习asynchronous的方式。 这很简单。

原生Promise简单例子:

 var products = [ {Store: {}, product: {}, variant: {}}, {Store: {}, product: {}, variant: {}}, ]; Promise.all(products.map(postProduct)).then(function(identifiers){ // use identifiers }); function postProduct(data) { return new Promise(function(ok, fail){ Shopify.post(...., function(){ //... ok(identifier); }); }); }