4
下面的代碼行是做什麼的?纖維/未來實際上做了什麼?
Npm.require('fibers/future');
我在網上找了例子,我遇到了幾個前來像這樣:
Future = Npm.require('fibers/future');
var accessToken = new Future();
將accessToken
變量是怎樣在這種情況下?
下面的代碼行是做什麼的?纖維/未來實際上做了什麼?
Npm.require('fibers/future');
我在網上找了例子,我遇到了幾個前來像這樣:
Future = Npm.require('fibers/future');
var accessToken = new Future();
將accessToken
變量是怎樣在這種情況下?
問題是有點老,但我的2美分:
由於Molda在註釋中說,未來的主要目的是使異步事情同步工作。 future
例如配備了3種方法:
future.wait()
主要是告訴你的線程,基本暫停直到被告知恢復。future.return(value)
,第一種方式告訴等待future
他能恢復,這也是非常有用的,因爲它返回一個值等待然後可以用分配,因此線條狀const ret = future.wait()
其中RET成爲你返回的值一旦恢復。future.throw(error)
,非常明確,使您的攔截線與給定的錯誤拋出。讓事情在javascript中同步可能聽起來有點令人不安,但它有時是有用的。在Meteor
中,當您在Meteor.method
中鏈接異步調用並且希望將其結果返回給客戶端時,它非常有用。您也可以使用Promises
,現在也可以完全支持Meteor
,我已經使用了它並且它可以正常工作,這取決於您的喜好。
一個簡單的例子:
Meteor.methods({
foo: function() {
const future = new Future();
someAsyncCall(foo, function bar(error, result) {
if (error) future.throw(error);
future.return(result);
});
// Execution is paused until callback arrives
const ret = future.wait(); // Wait on future not Future
return ret;
}
});
這是關於回調和承諾。它允許您同步運行異步代碼。 – Molda