首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js中的平行回调宇宙?

node.js中的平行回调宇宙?
EN

Stack Overflow用户
提问于 2015-11-26 19:28:57
回答 1查看 107关注 0票数 1

我试图在节点中实现一个shopify api,并希望同步调用post请求,因为我希望在发布后检索产品id并将其存储在数组中。我正在使用一个名为去异步的库作为同步等待循环。这个脚本以前曾经工作过,但突然停止了工作。但是,当我记录我的调用时,如果不使用de异步循环,则会从shopify返回响应,但是,当我使用de异步循环运行我的脚本时,我的标识符将保持为空,并且de异步循环将继续迭代。我对node.js中的异步请求比较陌生。标识符变量的作用域似乎是正确的。我现在唯一能想象的是,回调发生在一个并行的node.js宇宙中,它与我的while循环分离。任何帮助都是非常感谢的,泰克斯!

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 20:25:53

所有这些deasync解决方案都不可能是稳定的,因为它们依赖于内部引擎实现。

试着学习异步。真的很简单。

使用本机Promise的简化示例

代码语言:javascript
复制
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);
    });

  });
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33945820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档