如何在没有上下文切换的情况下在光纤内发出HTTP请求?

时间:2017-08-31 10:39:42

标签: javascript node.js http meteor fiber

在meteor中运行以下(简化)代码时,我遇到了意外行为:

import { HTTP } from 'meteor/http';
Fiber = Npm.require('fibers');

let x = {};

Fiber(function() {
    x.a = 1;

    let result = HTTP.get('https://jsonplaceholder.typicode.com/posts/1');

    x.a = 2;
    console.log('fiber finished!');
}).run();

console.log(x);

输出:

{ a: 1 }
fiber finished!

HTTP.get根据它documentation(应该是)同步的。我尝试使用另一个库而不是meteor / http,但得到了相同的结果。

似乎光纤内的执行在到达HTTP请求时停止并继续在光纤外部。只有在纤维外部完成后,它才会返回完成纤维内部的纤维。

发生了什么?如果没有此上下文切换,如何在光纤内发出HTTP请求?

0 个答案:

没有答案