我正在寻找一种使用promises的方法,比如JavaScript或ES5中的方法。
我想做点什么:
auto p = new Promise!string();
webRequest.get("server.com/file.json").then((v) {
auto json = ParseData(v);
auto fileContent = fileIO.readFile(json.filename).then((v2) {
p.resolve(v2);
});
});
D有没有办法做这样的事情?
答案 0 :(得分:2)
http://vibed.org/api/vibe.core.concurrency/Future
import vibe.core.concurrency : async;
import vibe.inet.urltransfer : download;
import vibe.data.json : parseJsonString;
import vibe.core.file : readFileUTF8;
auto p = async({
auto content = download("server.com", "file.json");
auto json = parseJsonString(content);
auto file_content = readFileUTF8(json["filename"]);
});
auto content = p.getResult();
但实际上不需要async
的使用,因为vibe.d的所有I / O函数已经100%异步,而不需要回调。