0

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

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 是(应该是)同步的。我尝试使用另一个库而不是流星/http,但得到了相同的结果。

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

这是怎么回事?如果没有此上下文切换,如何在光纤中发出 HTTP 请求?

4

0 回答 0