【发布时间】:2016-02-29 23:21:30
【问题描述】:
我正在尝试在节点中实现 shopify api,并希望同步调用发布请求,因为我想在发布后检索产品 ID 并将其存储在数组中。我正在使用一个名为deasync 的库作为同步等待循环。该脚本以前可以工作,但突然停止工作。 当我在没有 deasync 循环的情况下记录我的调用时,我看到 shopify 返回了响应,但是,当我使用 deasync 循环运行我的脚本时,我的标识符保持为空,并且 deasync 循环不断迭代。我对 node.js 中的异步请求比较陌生。我的标识符变量的范围似乎是正确的。我现在唯一能想象的是回调发生在与我的 while 循环分开的并行 node.js 宇宙中。任何帮助将不胜感激,谢谢!
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;
}
【问题讨论】:
-
在第一次滴答之后你不应该有任何类型的同步 I/O。
-
是的,这真的不是一个好主意。
-
@jov:嗯,就是这样。一个主意。带有概念证明。除非您确切知道自己在做什么,否则不应该真正使用它。
-
好的,感谢您指出这一点,但在这种情况下,您知道为什么回调似乎永远不会发生吗?
标签: javascript node.js asynchronous synchronous node-async