Сначала нужно определить promise
.
let checkfile = new Promise(function(resolve, reject) {
try {
if (!fs.existsSync(path)) {
var file = fs.createWriteStream("ring.wav");
var request = http.get("http://mp3.com/ring.wav",
function(response) {
response.pipe(file);
resolve("downloaded");
});
}
} catch(err) {
console.error(err)
}
});
Теперь вы можете использовать
checkfile.then()....
Вот то, как я делаю это:
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) list
1 #include <iostream>
2 #include <map>
3
4 int main()
5 {
6 std::map<int, int> a;
7 a[10] = 9;
8 std::map<int, int>::iterator it = a.begin();
9 ++it;
10 }
(gdb) b test.cpp:9
Breakpoint 1 at 0x8048942: file test.cpp, line 9.
(gdb) r
Starting program: /home/js/cpp/a.out
Breakpoint 1, main () at test.cpp:9
9 ++it;
(gdb) set print pretty on
(gdb) p it
$1 = {
_M_node = 0x94fa008
}
(gdb) p *it
$2 = (class std::pair<const int, int> &) @0x94fa018: {
first = 10,
second = 9
}
(gdb)
p
будет итератор к std::pair<const int, double>
, таким образом, то, что Вы на самом деле хотите, p->first
. Я не думаю дескрипторы GDB перегруженные операторы хорошо, тем не менее, таким образом, Вы, вероятно, хотите p.
{некоторый участник, который представляет pair
объект}.first
. Существует документация Doxygen для libstdc ++, таким образом, можно выяснить, какого участника Вы хотите, в этом случае это надеется быть ((_Rb_tree_node<pair<const int, double> >*)(p._M_node))-> _M_value_field.first
. Поскольку это является довольно подробным, я проверил бы, чтобы видеть, работает ли перегрузка оператора сначала (и не, я не думаю, что существует что-либо более простое; извините). Вы могли также попытаться явно назвать операторы, но я не думаю, что gcc может сделать это любой (например. it.operator*().first
).
Править: ожидайте, сообщение litb, кажется, показывает, что gcc действительно поддерживает перегрузки оператора на *. Странный, я всегда находил, что это не работало!
Вы можете попробовать Archer , ветку разработки GDB, в первую очередь предназначенную для улучшения опыта отладки C ++. Нажмите здесь , чтобы увидеть демонстрацию симпатичного принтера для C ++. Этот новый проект также позволяет управлять GDB скриптом Python. Основной разработчик, Том Тромей , написал немало блогов об этом увлеченном проекте.